you can now request a device, thinking we need a mapping table again :p

This commit is contained in:
Oly 2017-04-25 14:01:19 +01:00
parent 69af967ae6
commit 48c90c95f5
3 changed files with 27 additions and 24 deletions

View File

@ -8,7 +8,6 @@ class Task(object):
for field in ('id', 'name', 'owner', 'status'):
setattr(self, field, kwargs.get(field, None))
class DeviceSerializer(serializers.ModelSerializer):
class Meta:
model = Device

View File

@ -7,8 +7,8 @@ from test_plus.test import TestCase
from rest_framework.test import APIRequestFactory
from rest_framework.test import RequestsClient
from mhackspace.rfid.models import Device
from mhackspace.user.models import User
from mhackspace.rfid.models import Device, Rfid
from mhackspace.users.models import User
# http://www.django-rest-framework.org/api-guide/testing/
@ -22,11 +22,15 @@ class MigrationTestCase(TestCase):
call_command('migrate', 'rfid', stdout=out)
self.assertIn("... OK\n", out.getvalue())
class ApiTests(TestCase):
def setUp(self):
Device(name='device01').save()
User(name='User01').save()
Rfid(code=1, user=1).save()
self.device = Device(name='device01')
self.device.save()
self.user = User(name='User01')
self.user.save()
self.rfid = Rfid(code=1, user=self.user)
self.rfid.save()
def testAuth(self):
factory = APIRequestFactory()
@ -35,12 +39,13 @@ class ApiTests(TestCase):
def testSamsMadness(self):
client = RequestsClient()
response = client.post(
'http://127.0.0.1:8180/api/v1/rfidAuth/?format=json',
'http://127.0.0.1:8180/api/v1/rfidAuth/',
data={'rfid':'1', 'device': '1'})
print(response)
# print(response.json())
assert response.status_code == 200
self.assertEquals(response.json().get('results'), [{'name': 'device01'}])
self.assertEquals(
response.json(),
[{'rfid': self.rfid.code, 'name': 'device01', 'device_id': self.device.identification}])
def testAuthUserWithDevice(self):
client = RequestsClient()
@ -48,11 +53,9 @@ class ApiTests(TestCase):
assert response.status_code == 200
self.assertEquals(response.json().get('results'), [{'name': 'device01'}])
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'}])

View File

@ -1,6 +1,7 @@
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import viewsets
from rest_framework import status
from mhackspace.rfid.models import Device, Rfid
from mhackspace.rfid.serializers import DeviceSerializer, AuthSerializer
from django.shortcuts import get_list_or_404, get_object_or_404
@ -11,22 +12,22 @@ class DeviceViewSet(viewsets.ModelViewSet):
serializer_class = DeviceSerializer
#https://medium.com/django-rest-framework/django-rest-framework-viewset-when-you-don-t-have-a-model-335a0490ba6f
# 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 = ['get', 'post', 'head']
http_method_names = ['post']
serializer_class = AuthSerializer
def list(self, request):
serializer = AuthSerializer(instance={'name': '1','rfid': '1', 'device_id': '1'})
serializer = AuthSerializer(
instance={'name': '1', 'rfid': '1', 'device_id': '1'})
return Response(serializer.data)
def post(self, request, format=None):
rfid = Rfid.objects.get(code=request.GET.get('rfid_id'))
print(rfid.user.device__set(device=request.GET.get('rfid_id')))
# = get_object_or_404(Disease, pk=disease_id)
# Device(rfid, device)
serializer = AuthSerializer(instance={'name': '1', 'rfid': '1', 'device_id': '1'})
return Response(serializer.data)
try:
rfid = Rfid.objects.get(code=request.data.get('rfid'))
device = Device.objects.get(user=rfid.user, identifier=request.data.get('device_id'))
except:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = AuthSerializer(
instance={'name': device.name, 'rfid': rfid.code, 'device_id': device.identifier})
return Response(serializer.data, status=200)