add AccessPermission modeling

This commit is contained in:
Laura Klünder 2017-10-24 22:13:53 +02:00
parent 0ce6ca9202
commit 7c44a9d74f
2 changed files with 70 additions and 1 deletions

View file

@ -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')]),
),
]

View file

@ -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'))