41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
import logging
|
|
from rest_framework.response import Response
|
|
from rest_framework import viewsets
|
|
from rest_framework import status
|
|
from mhackspace.rfid.models import Device, Rfid, DeviceAuth
|
|
from mhackspace.rfid.serializers import DeviceSerializer, AuthSerializer
|
|
from django.core.exceptions import ObjectDoesNotExist, ValidationError
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class DeviceViewSet(viewsets.ModelViewSet):
|
|
queryset = Device.objects.all()
|
|
serializer_class = DeviceSerializer
|
|
|
|
|
|
# https://medium.com/django-rest-framework/django-rest-framework-viewset-when-you-don-t-have-a-model-335a0490ba6f
|
|
class AuthUserWithDeviceViewSet(viewsets.ViewSet):
|
|
# http_method_names = ['post']
|
|
serializer_class = AuthSerializer
|
|
|
|
def list(self, request):
|
|
serializer = DeviceSerializer(
|
|
DeviceAuth.objects.all(), many=True)
|
|
return Response(serializer.data)
|
|
|
|
def post(self, request, format=None):
|
|
try:
|
|
rfid = Rfid.objects.get(code=request.data.get('rfid'))
|
|
device = Device.objects.get(identifier=request.data.get('device'))
|
|
deviceAuth = DeviceAuth.objects.get(device=device.identifier, rfid=rfid.id)
|
|
except ObjectDoesNotExist:
|
|
return Response(status=status.HTTP_404_NOT_FOUND)
|
|
except ValidationError:
|
|
# except:
|
|
# logger.exception("An error occurred")
|
|
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
|
serializer = AuthSerializer(
|
|
instance={'name': device.name, 'rfid': rfid.code, 'device': device.identifier})
|
|
return Response(serializer.data, status=200)
|