small fixes to wip rfid api
This commit is contained in:
parent
ed9958b2ad
commit
c16e9079ca
|
@ -11,26 +11,15 @@ from mhackspace.users.models import Rfid
|
||||||
# just brainstorming so we can start playing with this,
|
# just brainstorming so we can start playing with this,
|
||||||
# be nice to make this a 3rd party django installable app ?
|
# be nice to make this a 3rd party django installable app ?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# description of a device like door, print, laser cutter
|
# description of a device like door, print, laser cutter
|
||||||
class Device(models.Model):
|
class Device(models.Model):
|
||||||
# user = models.ManyToMany(settings.AUTH_USER_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)
|
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)
|
description = models.CharField(_('Short description of what the device does'), blank=True, max_length=255)
|
||||||
added_date = models.DateTimeField(default=timezone.now, editable=False)
|
added_date = models.DateTimeField(default=timezone.now, editable=False)
|
||||||
|
|
||||||
members = models.ManyToManyField(Rfid, through='DeviceAuth')
|
members = models.ManyToManyField(Rfid, through='DeviceAuth')
|
||||||
|
|
||||||
# user = models.ForeignKey(
|
|
||||||
# settings.AUTH_USER_MODEL,
|
|
||||||
# null=True, blank=True,
|
|
||||||
# # related_name='rfid_user'
|
|
||||||
# )
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,9 @@ class Task(object):
|
||||||
|
|
||||||
|
|
||||||
class DeviceSerializer(serializers.ModelSerializer):
|
class DeviceSerializer(serializers.ModelSerializer):
|
||||||
|
added_date = serializers.DateTimeField(format='iso-8601')
|
||||||
class Meta:
|
class Meta:
|
||||||
model = DeviceAuth
|
model = Device
|
||||||
fields = ('__all__')
|
fields = ('__all__')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -28,24 +28,30 @@ class ApiTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user = User(name='User01')
|
self.user = User(name='User01')
|
||||||
self.user.save()
|
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.device.save()
|
||||||
self.rfid = Rfid(code='1', user=self.user)
|
self.rfid = Rfid(code='1', user=self.user)
|
||||||
self.rfid.save()
|
self.rfid.save()
|
||||||
self.auth = DeviceAuth(rfid=self.rfid, device=self.device)
|
self.auth = DeviceAuth(rfid=self.rfid, device=self.device)
|
||||||
self.save()
|
self.auth.save()
|
||||||
|
|
||||||
def testAuth(self):
|
def testAuth(self):
|
||||||
factory = APIRequestFactory()
|
factory = APIRequestFactory()
|
||||||
request = factory.get('/rfid/')
|
request = factory.get('/rfid/')
|
||||||
|
|
||||||
def testValidAuthCase(self):
|
def testValidAuthCase(self):
|
||||||
|
"if we have a user rfid and a device identifier"
|
||||||
client = RequestsClient()
|
client = RequestsClient()
|
||||||
response = client.post(
|
response = client.post(
|
||||||
'http://127.0.0.1:8180/api/v1/rfidAuth/',
|
'http://127.0.0.1:8180/api/v1/rfidAuth/',
|
||||||
data={'rfid': '1', 'device': self.device.identifier})
|
data={'rfid': '1', 'device': self.device.identifier})
|
||||||
assert response.status_code == 200
|
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(
|
self.assertEquals(
|
||||||
response.json(),
|
response.json(),
|
||||||
expected_result
|
expected_result
|
||||||
|
@ -68,11 +74,23 @@ class ApiTests(TestCase):
|
||||||
client = RequestsClient()
|
client = RequestsClient()
|
||||||
response = client.get('http://127.0.0.1:8180/api/v1/rfid/?format=json')
|
response = client.get('http://127.0.0.1:8180/api/v1/rfid/?format=json')
|
||||||
assert response.status_code == 200
|
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):
|
def testFetchDeviceList(self):
|
||||||
client = RequestsClient()
|
client = RequestsClient()
|
||||||
response = client.get('http://127.0.0.1:8180/api/v1/rfid/?format=json')
|
response = client.get('http://127.0.0.1:8180/api/v1/rfid/?format=json')
|
||||||
assert response.status_code == 200
|
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': ''
|
||||||
|
}])
|
||||||
|
|
||||||
|
|
|
@ -22,13 +22,13 @@ class AuthUserWithDeviceViewSet(viewsets.ViewSet):
|
||||||
|
|
||||||
def list(self, request):
|
def list(self, request):
|
||||||
serializer = DeviceSerializer(
|
serializer = DeviceSerializer(
|
||||||
DeviceAuth.objects.all(), many=True)
|
Device.objects.all(), many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
def post(self, request, format=None):
|
def post(self, request, format=None):
|
||||||
try:
|
try:
|
||||||
rfid = Rfid.objects.get(code=request.data.get('rfid'))
|
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)
|
deviceAuth = DeviceAuth.objects.get(device=device.identifier, rfid=rfid.id)
|
||||||
except ObjectDoesNotExist:
|
except ObjectDoesNotExist:
|
||||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||||
|
|
Loading…
Reference in New Issue