refactored rfid model into user, started on user save form
This commit is contained in:
parent
66e012f994
commit
4b3f57ea7e
|
@ -7,6 +7,7 @@ from mhackspace.base.models import BannerImage
|
|||
from mhackspace.feeds.models import Article, Feed
|
||||
from mhackspace.users.models import User
|
||||
from mhackspace.blog.models import Category, Post
|
||||
from mhackspace.rfid.models import Device
|
||||
|
||||
|
||||
class ImageFixture(AutoFixture):
|
||||
|
@ -38,6 +39,18 @@ class Command(BaseCommand):
|
|||
})
|
||||
users.create(10)
|
||||
|
||||
rfid = AutoFixture(Rfid)
|
||||
rfid.create(20)
|
||||
|
||||
device = AutoFixture(Device)
|
||||
device.create(5)
|
||||
|
||||
feed = AutoFixture(Feed)
|
||||
feed.create(10)
|
||||
|
||||
feeds = AutoFixture(Article)
|
||||
feeds.create(10)
|
||||
|
||||
banners = ImageFixture(BannerImage)
|
||||
banners.create(10)
|
||||
self.stdout.write(
|
||||
|
|
|
@ -3,7 +3,7 @@ from django.contrib import admin
|
|||
from django.contrib.admin import ModelAdmin
|
||||
from django.forms.models import ModelChoiceField
|
||||
|
||||
from mhackspace.rfid.models import Device, Rfid, DeviceAuth
|
||||
from mhackspace.rfid.models import Device, DeviceAuth
|
||||
|
||||
|
||||
@admin.register(Device)
|
||||
|
@ -11,11 +11,6 @@ class DeviceAdmin(ModelAdmin):
|
|||
list_display = ('name', 'identifier')
|
||||
|
||||
|
||||
@admin.register(Rfid)
|
||||
class RfidAdmin(ModelAdmin):
|
||||
list_display = ('code', 'description')
|
||||
|
||||
|
||||
# Probably need to look at this again
|
||||
@admin.register(DeviceAuth)
|
||||
class DeviceAuthAdmin(ModelAdmin):
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-04-14 21:15
|
||||
# Generated by Django 1.11 on 2017-04-27 18:29
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
@ -14,7 +13,7 @@ class Migration(migrations.Migration):
|
|||
initial = True
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('users', '0004_rfid'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
|
@ -31,17 +30,13 @@ class Migration(migrations.Migration):
|
|||
name='DeviceAuth',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('device', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='device', to='rfid.Device')),
|
||||
('user', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='user_auth', to=settings.AUTH_USER_MODEL)),
|
||||
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rfid.Device')),
|
||||
('rfid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.Rfid')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Rfid',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('code', models.PositiveIntegerField()),
|
||||
('description', models.CharField(blank=True, max_length=255, verbose_name='Short rfid description')),
|
||||
('user', models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='rfid_user', to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='members',
|
||||
field=models.ManyToManyField(through='rfid.DeviceAuth', to='users.Rfid'),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-04-20 07:30
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('rfid', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='deviceauth',
|
||||
name='device',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='deviceauth',
|
||||
name='user',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='user',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='rfid',
|
||||
name='user',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='DeviceAuth',
|
||||
),
|
||||
]
|
|
@ -1,29 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-04-27 07:43
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('rfid', '0002_auto_20170420_0730'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DeviceAuth',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rfid.Device')),
|
||||
('rfid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rfid.Rfid')),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='device',
|
||||
name='members',
|
||||
field=models.ManyToManyField(through='rfid.DeviceAuth', to='rfid.Rfid'),
|
||||
),
|
||||
]
|
|
@ -7,25 +7,11 @@ from django.conf import settings
|
|||
from django.db import models
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
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 ?
|
||||
|
||||
|
||||
# users rfid card to user mapping, user can have more than one card
|
||||
class Rfid(models.Model):
|
||||
code = models.PositiveIntegerField()
|
||||
description = models.CharField(_('Short rfid description'), blank=True, max_length=255)
|
||||
user = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
null=True, blank=True,
|
||||
# related_name='rfid_user'
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.description
|
||||
|
||||
def name(self):
|
||||
return self.user.name
|
||||
|
||||
|
||||
# description of a device like door, print, laser cutter
|
||||
|
@ -39,11 +25,11 @@ class Device(models.Model):
|
|||
|
||||
members = models.ManyToManyField(Rfid, through='DeviceAuth')
|
||||
|
||||
user = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
null=True, blank=True,
|
||||
# related_name='rfid_user'
|
||||
)
|
||||
# user = models.ForeignKey(
|
||||
# settings.AUTH_USER_MODEL,
|
||||
# null=True, blank=True,
|
||||
# # related_name='rfid_user'
|
||||
# )
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
|
@ -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, Rfid, DeviceAuth
|
||||
from mhackspace.users.models import User
|
||||
from mhackspace.rfid.models import Device, DeviceAuth
|
||||
from mhackspace.users.models import User, Rfid
|
||||
|
||||
|
||||
# http://www.django-rest-framework.org/api-guide/testing/
|
||||
|
|
|
@ -2,7 +2,8 @@ import logging
|
|||
from rest_framework.response import Response
|
||||
from rest_framework import viewsets
|
||||
from rest_framework import status
|
||||
from mhackspace.rfid.models import Device, Rfid, DeviceAuth
|
||||
from mhackspace.users.models import Rfid
|
||||
from mhackspace.rfid.models import Device, DeviceAuth
|
||||
from mhackspace.rfid.serializers import DeviceSerializer, AuthSerializer
|
||||
from django.core.exceptions import ObjectDoesNotExist, ValidationError
|
||||
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
{% extends "base.html" %}
|
||||
{% load crispy_forms_tags %}
|
||||
|
||||
{% block title %}{{ user.username }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>{{ user.username }}</h1>
|
||||
<form class="form-horizontal" method="post" action="{% url 'users:update' %}" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{{ form|crispy }}
|
||||
{{ form_blurb|crispy }}
|
||||
<div class="control-group">
|
||||
<div class="controls">
|
||||
<button type="submit" class="btn">Update</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% endblock %}
|
|
@ -74,6 +74,7 @@
|
|||
<div class="col-sm-12">
|
||||
<p>
|
||||
<a class="btn btn-primary" href="{% url 'users:update' %}" role="button">My Info</a>
|
||||
<a class="btn btn-primary" href="{% url 'users:access_cards' %}" role="button">My Rfid Cards</a>
|
||||
<a class="btn btn-primary" href="{% url 'account_email' %}" role="button">E-Mail</a>
|
||||
</p>
|
||||
<!-- Your Stuff: Custom user template urls -->
|
||||
|
|
|
@ -9,7 +9,7 @@ from django.contrib.auth.forms import UserChangeForm, UserCreationForm
|
|||
from django.http import HttpResponseRedirect
|
||||
from django.urls import reverse
|
||||
from django.conf.urls import url
|
||||
from .models import User, Membership, MEMBERSHIP_STATUS_CHOICES
|
||||
from .models import User, Rfid, Membership, MEMBERSHIP_STATUS_CHOICES
|
||||
|
||||
from mhackspace.subscriptions.management.commands.update_membership_status import update_subscriptions
|
||||
|
||||
|
@ -64,3 +64,9 @@ class MyUserAdmin(AuthUserAdmin):
|
|||
class MembershipAdmin(ModelAdmin):
|
||||
list_display = ('user', 'payment', 'date', 'status')
|
||||
list_filter = ('status',)
|
||||
|
||||
|
||||
@admin.register(Rfid)
|
||||
class RfidAdmin(ModelAdmin):
|
||||
list_display = ('code', 'description')
|
||||
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-04-27 18:25
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('users', '0003_merge_20170226_0844'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Rfid',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('code', models.PositiveIntegerField()),
|
||||
('description', models.CharField(blank=True, max_length=255, verbose_name='Short rfid description')),
|
||||
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -90,3 +90,20 @@ class Membership(models.Model):
|
|||
|
||||
def __str__(self):
|
||||
return self.reference
|
||||
|
||||
|
||||
# users rfid card to user mapping, user can have more than one card
|
||||
class Rfid(models.Model):
|
||||
code = models.PositiveIntegerField()
|
||||
description = models.CharField(_('Short rfid description'), blank=True, max_length=255)
|
||||
user = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
null=True, blank=True,
|
||||
# related_name='rfid_user'
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.description
|
||||
|
||||
def name(self):
|
||||
return self.user.name
|
||||
|
|
|
@ -26,4 +26,9 @@ urlpatterns = [
|
|||
view=views.UserUpdateView.as_view(),
|
||||
name='update'
|
||||
),
|
||||
url(
|
||||
regex=r'^-access-cards$',
|
||||
view=views.RfidCardsUpdateView.as_view(),
|
||||
name='access_cards'
|
||||
),
|
||||
]
|
||||
|
|
|
@ -2,10 +2,11 @@
|
|||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.views.generic import DetailView, ListView, RedirectView, UpdateView
|
||||
from django.views.generic import DetailView, ListView, RedirectView, UpdateView, CreateView
|
||||
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
|
||||
from .models import Rfid
|
||||
from .models import User
|
||||
from .models import Blurb
|
||||
from .models import Membership
|
||||
|
@ -65,6 +66,18 @@ class UserUpdateView(LoginRequiredMixin, UpdateView):
|
|||
|
||||
return super(UserUpdateView, self).form_valid(form)
|
||||
|
||||
|
||||
class RfidCardsUpdateView(LoginRequiredMixin, CreateView):
|
||||
fields = ['user', 'code', 'description', ]
|
||||
model = Rfid
|
||||
|
||||
def form_valid(self, form):
|
||||
user = self.request.user
|
||||
form.instance.user = user
|
||||
return super(RfidCardsUpdateView, self).form_valid(form)
|
||||
|
||||
|
||||
|
||||
class UserListView(LoginRequiredMixin, ListView):
|
||||
model = User
|
||||
# These next two lines tell the view to index lookups by username
|
||||
|
|
Loading…
Reference in New Issue