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,
|
||||
# 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
|
||||
|
||||
|
|
|
@ -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__')
|
||||
|
||||
|
||||
|
|
|
@ -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': ''
|
||||
}])
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue