diff --git a/mhackspace/rfid/models.py b/mhackspace/rfid/models.py index deedb82..c80c718 100644 --- a/mhackspace/rfid/models.py +++ b/mhackspace/rfid/models.py @@ -11,26 +11,15 @@ from mhackspace.users.models import Rfid # just brainstorming so we can start playing with this, # be nice to make this a 3rd party django installable app ? - - - # description of a device like door, print, laser cutter class Device(models.Model): # user = models.ManyToMany(settings.AUTH_USER_MODEL) - identifier = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) - name = models.CharField(_('Device name'), max_length=255) + identifier = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) description = models.CharField(_('Short description of what the device does'), blank=True, max_length=255) added_date = models.DateTimeField(default=timezone.now, editable=False) - members = models.ManyToManyField(Rfid, through='DeviceAuth') - # user = models.ForeignKey( - # settings.AUTH_USER_MODEL, - # null=True, blank=True, - # # related_name='rfid_user' - # ) - def __str__(self): return self.name diff --git a/mhackspace/rfid/serializers.py b/mhackspace/rfid/serializers.py index f93fad3..1417a9f 100644 --- a/mhackspace/rfid/serializers.py +++ b/mhackspace/rfid/serializers.py @@ -10,8 +10,9 @@ class Task(object): class DeviceSerializer(serializers.ModelSerializer): + added_date = serializers.DateTimeField(format='iso-8601') class Meta: - model = DeviceAuth + model = Device fields = ('__all__') diff --git a/mhackspace/rfid/tests/tests.py b/mhackspace/rfid/tests/tests.py index 69254be..2f5b24b 100644 --- a/mhackspace/rfid/tests/tests.py +++ b/mhackspace/rfid/tests/tests.py @@ -28,24 +28,30 @@ class ApiTests(TestCase): def setUp(self): self.user = User(name='User01') self.user.save() - self.device = Device(name='device01', user=self.user) + self.device = Device( + name='device01', + identifier='8e274b70-a4b3-4600-9472-f20ea7828cb6') self.device.save() self.rfid = Rfid(code='1', user=self.user) self.rfid.save() self.auth = DeviceAuth(rfid=self.rfid, device=self.device) - self.save() + self.auth.save() def testAuth(self): factory = APIRequestFactory() request = factory.get('/rfid/') def testValidAuthCase(self): + "if we have a user rfid and a device identifier" client = RequestsClient() response = client.post( 'http://127.0.0.1:8180/api/v1/rfidAuth/', data={'rfid': '1', 'device': self.device.identifier}) assert response.status_code == 200 - expected_result = {'rfid': self.rfid.code, 'name': 'device01', 'device': str(self.device.identifier)} + expected_result = { + 'rfid': self.rfid.code, + 'name': 'device01', + 'device': str(self.device.identifier)} self.assertEquals( response.json(), expected_result @@ -68,11 +74,23 @@ class ApiTests(TestCase): client = RequestsClient() response = client.get('http://127.0.0.1:8180/api/v1/rfid/?format=json') assert response.status_code == 200 - self.assertEquals(response.json().get('results'), [{'name': 'device01'}]) + self.assertEquals(response.json().get('results'), [{ + 'name': 'device01', + 'identifier': '8e274b70-a4b3-4600-9472-f20ea7828cb6', + 'members': [1], + 'added_date': self.device.added_date.isoformat().replace('+00:00', 'Z'), + 'description': '' + }]) def testFetchDeviceList(self): client = RequestsClient() response = client.get('http://127.0.0.1:8180/api/v1/rfid/?format=json') assert response.status_code == 200 - self.assertEquals(response.json().get('results'), [{'name': 'device01'}]) + self.assertEquals(response.json().get('results'), [{ + 'name': 'device01', + 'identifier': '8e274b70-a4b3-4600-9472-f20ea7828cb6', + 'members': [1], + 'added_date': self.device.added_date.isoformat().replace('+00:00', 'Z'), + 'description': '' + }]) diff --git a/mhackspace/rfid/views.py b/mhackspace/rfid/views.py index 5b68b1a..66f6b05 100644 --- a/mhackspace/rfid/views.py +++ b/mhackspace/rfid/views.py @@ -22,13 +22,13 @@ class AuthUserWithDeviceViewSet(viewsets.ViewSet): def list(self, request): serializer = DeviceSerializer( - DeviceAuth.objects.all(), many=True) + Device.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')) + # 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)