check device

This commit is contained in:
Vratika 2024-12-10 12:05:01 +05:30
parent 606bbcd0f0
commit 558e8b5acd
2 changed files with 51 additions and 23 deletions

View File

@ -13,5 +13,5 @@ urlpatterns = [
path('maps', maps, name='maps'),
path('update-device/', update_device, name='update_device'), # New route for updating device
path('device-data/<int:device_id>/', views.get_device_data, name='get_device_data'),
path('check-device/<int:device_id>/', CheckDeviceAssociation.as_view(), name='check_device_association'),
path('check-device/', CheckDeviceAssociation.as_view(), name='check_device_association'),
]

View File

@ -298,33 +298,61 @@ def get_device_data(request, device_id):
class CheckDeviceAssociation(APIView):
"""
API to check if the given device is associated with the logged-in user.
API to check if the given device is associated with the user based on
user ID, device MAC address, and unique ID, and return the required responses.
"""
# Set the authentication and permission classes
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
# Remove authentication and permission classes
authentication_classes = []
permission_classes = []
def get(self, request, device_id):
def post(self, request):
try:
# Get the logged-in user's profile
user_profile = UserProfile.objects.get(user=request.user)
# Extract the required parameters from the request body
user_id = request.data.get("user_id")
mac_address = request.data.get("mac_address")
unique_id = request.data.get("unique_id")
# Check if the device is associated with the user's profile
device = Devices.objects.get(id=device_id, used_by=user_profile)
print(device)
# Validate the presence of required parameters
if not user_id or not mac_address or not unique_id:
return Response(
{"error": "user_id, mac_address, and unique_id are required."},
status=status.HTTP_400_BAD_REQUEST
)
# Check if the user exists
try:
user_profile = UserProfile.objects.get(user_id=user_id)
print(user_profile)
except UserProfile.DoesNotExist:
# User does not exist
return Response(
{"info": "User does not exist. Proceeding to send OTP."},
status=status.HTTP_404_NOT_FOUND
)
# Check if the device exists and is associated with the user
try:
device = Devices.objects.get(
used_by=user_profile,
mac_address=mac_address,
unique_id=unique_id
)
print(device)
# Device is already registered
return Response(
{"message": "Device already registered."},
status=status.HTTP_200_OK
)
except Devices.DoesNotExist:
# User exists but device is not registered
return Response(
{"message": "User exists but device is not registered."},
status=status.HTTP_201_CREATED
)
except Exception as e:
return Response(
{"message": "Device is associated with the logged-in user."},
status=status.HTTP_200_OK
)
except UserProfile.DoesNotExist:
return Response(
{"error": "User profile not found."},
status=status.HTTP_404_NOT_FOUND
)
except Devices.DoesNotExist:
return Response(
{"error": "Device not found or not associated with the user."},
status=status.HTTP_404_NOT_FOUND
{"error": f"An unexpected error occurred: {str(e)}"},
status=status.HTTP_500_INTERNAL_SERVER_ERROR
)