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('maps', maps, name='maps'),
path('update-device/', update_device, name='update_device'), # New route for updating device 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('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): 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 # Remove authentication and permission classes
authentication_classes = [TokenAuthentication] authentication_classes = []
permission_classes = [IsAuthenticated] permission_classes = []
def get(self, request, device_id): def post(self, request):
try: try:
# Get the logged-in user's profile # Extract the required parameters from the request body
user_profile = UserProfile.objects.get(user=request.user) 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 # Validate the presence of required parameters
device = Devices.objects.get(id=device_id, used_by=user_profile) if not user_id or not mac_address or not unique_id:
print(device) 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( return Response(
{"message": "Device is associated with the logged-in user."}, {"error": f"An unexpected error occurred: {str(e)}"},
status=status.HTTP_200_OK status=status.HTTP_500_INTERNAL_SERVER_ERROR
)
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
) )