From 7c44a9d74f1474d9ce36eac478fe8307d0f1f14d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 24 Oct 2017 22:13:53 +0200 Subject: [PATCH] add AccessPermission modeling --- .../migrations/0040_access_permissions.py | 54 +++++++++++++++++++ src/c3nav/mapdata/models/access.py | 17 +++++- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 src/c3nav/mapdata/migrations/0040_access_permissions.py diff --git a/src/c3nav/mapdata/migrations/0040_access_permissions.py b/src/c3nav/mapdata/migrations/0040_access_permissions.py new file mode 100644 index 00000000..d068fe17 --- /dev/null +++ b/src/c3nav/mapdata/migrations/0040_access_permissions.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.6 on 2017-10-24 20:12 +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), + ('mapdata', '0039_auto_20171024_2011'), + ] + + operations = [ + migrations.CreateModel( + name='AccessPermission', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('expire_date', models.DateTimeField(null=True, verbose_name='expires')), + ], + options={ + 'verbose_name': 'Access Permission', + 'verbose_name_plural': 'Access Permissions', + 'default_related_name': 'accesspermissions', + }, + ), + migrations.AddField( + model_name='accessrestriction', + name='open', + field=models.BooleanField(default=False, verbose_name='open'), + ), + migrations.AddField( + model_name='accesspermission', + name='access_restriction', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='accesspermissions', to='mapdata.AccessRestriction'), + ), + migrations.AddField( + model_name='accesspermission', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='accesspermissions', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='accessrestriction', + name='users', + field=models.ManyToManyField(related_name='accessrestrictions', through='mapdata.AccessPermission', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterUniqueTogether( + name='accesspermission', + unique_together=set([('user', 'access_restriction')]), + ), + ] diff --git a/src/c3nav/mapdata/models/access.py b/src/c3nav/mapdata/models/access.py index 56ccc066..93dc5c79 100644 --- a/src/c3nav/mapdata/models/access.py +++ b/src/c3nav/mapdata/models/access.py @@ -1,3 +1,4 @@ +from django.conf import settings from django.db import models from django.db.models import Q from django.utils.translation import ugettext_lazy as _ @@ -7,8 +8,10 @@ from c3nav.mapdata.models.base import SerializableMixin, TitledMixin class AccessRestriction(TitledMixin, models.Model): """ - An access restriction, currently without finetuning + An access restriction """ + users = models.ManyToManyField(settings.AUTH_USER_MODEL, through='AccessPermission') + open = models.BooleanField(default=False, verbose_name=_('open')) class Meta: verbose_name = _('Access Restriction') @@ -22,6 +25,18 @@ class AccessRestriction(TitledMixin, models.Model): return cls.objects.none() +class AccessPermission(models.Model): + user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) + access_restriction = models.ForeignKey(AccessRestriction, on_delete=models.CASCADE) + expire_date = models.DateTimeField(null=True, verbose_name=_('expires')) + + class Meta: + verbose_name = _('Access Permission') + verbose_name_plural = _('Access Permissions') + default_related_name = 'accesspermissions' + unique_together = (('user', 'access_restriction'), ) + + class AccessRestrictionMixin(SerializableMixin, models.Model): access_restriction = models.ForeignKey(AccessRestriction, null=True, blank=True, verbose_name=_('Access Restriction'))