Better test data for rfid system

This commit is contained in:
Oliver Marks 2017-09-14 22:03:26 +01:00
parent 1734dc3f9c
commit 02befa5ddb
7 changed files with 92 additions and 23 deletions

View File

@ -75,7 +75,7 @@ docker-compose -fdev.yml run --rm django python manage.py rendervariations 'blog
#+END_SRC
** Api
#+BEGIN_SRC python
import coreapi
import requests
url = 'http://127.0.0.1:8180/api/v1/rfidAuth/'
data = {
@ -83,10 +83,14 @@ data = {
'device': '7bff6053-77ef-4250-ac11-8a119fd05a0e'
}
client = coreapi.Client()
client.get(url)
client.post(url, data)
# client = RequestsClient()
response = requests.post(
'http://127.0.0.1:8180/api/v1/rfidAuth/',
data={'rfid': 'fa14', 'device': 'e571eee1-7bf7-4453-980e-7519e2a83de6'})
#requests.get(url)
return response.status_code
#+END_SRC
#+RESULTS:
: 404

View File

@ -1,6 +1,12 @@
import uuid
import random
from autofixture import AutoFixture
from autofixture.generators import ImageGenerator, IntegerGenerator, ChoicesGenerator
from autofixture.generators import (
ImageGenerator,
IntegerGenerator,
ChoicesGenerator,
Generator,
LoremWordGenerator)
from django.core.management.base import BaseCommand
from django.core.management import call_command
from mhackspace.base.models import BannerImage
@ -15,6 +21,16 @@ class ImageFixture(AutoFixture):
scaled_image = ImageGenerator(width=800, height=300, sizes=((1280, 300),))
def RfidFixture():
while True:
yield str(uuid.uuid4())[0:4]
class RfidGenerator(Generator):
def generate(self):
return str(uuid.uuid4())[0:4]
class Command(BaseCommand):
help = 'Build test data for development environment'
@ -37,18 +53,23 @@ class Command(BaseCommand):
# random data
users = AutoFixture(User, field_values={
'title': ChoicesGenerator(('Mr', 'Mrs', 'Emperor', 'Captain'))
'title': ChoicesGenerator(values=('Mr', 'Mrs', 'Emperor', 'Captain'))
})
users.create(10)
Rfid.objects.all().delete()
Device.objects.all().delete()
DeviceAuth.objects.all().delete()
rfid = AutoFixture(Rfid, field_values={'code': IntegerGenerator(1, 100000)})
rfid = AutoFixture(
Rfid,
field_values={
'code': RfidGenerator(),
'description': LoremWordGenerator()})
rfid.create(20)
device = AutoFixture(Device, field_values={
'name': ChoicesGenerator(('Door', 'Printer', 'Laser Cutter', ''))
'name': ChoicesGenerator(values=('Door', 'Printer', 'Laser Cutter', ''))
})
device.create(5)

View File

@ -11,20 +11,12 @@ class DeviceAdmin(ModelAdmin):
list_display = ('name', 'identifier')
# Probably need to look at this again
@admin.register(DeviceAuth)
class DeviceAuthAdmin(ModelAdmin):
list_display = ('rfid', 'device')
list_display = ('device', 'rfid_code', 'rfid_user')
class CustomModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.description + ' - ' + str(obj.user)
def rfid_code(self, x):
return x.rfid.code
# def formfield_for_foreignkey(self, db_field, request, **kwargs):
# if db_field.name == "rfid":
# return self.CustomModelChoiceField(
# Rfid.objects.all(),
# initial=request.user)
# return super(DeviceAuthAdmin, self).formfield_for_foreignkey(
# db_field, request, **kwargs)
def rfid_user(self, x):
return x.rfid.user

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2017-09-12 20:37
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('users', '0004_auto_20170813_1557'),
('users', '0004_rfid'),
]
operations = [
]

View File

@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2017-09-13 17:18
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('users', '0005_merge_20170912_2037'),
('users', '0005_merge_20170913_0740'),
]
operations = [
]

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.4 on 2017-09-14 20:21
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('users', '0006_merge_20170913_1718'),
]
operations = [
migrations.AlterField(
model_name='rfid',
name='code',
field=models.CharField(max_length=7),
),
]

View File

@ -94,7 +94,7 @@ class Membership(models.Model):
# users rfid card to user mapping, user can have more than one card
class Rfid(models.Model):
code = models.PositiveIntegerField()
code = models.CharField(max_length=7)
description = models.CharField(_('Short rfid description'), blank=True, max_length=255)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,