Revert c894d35
--- Fuck django-guardian
This reverts commit c894d35932
.
This commit is contained in:
parent
c894d35932
commit
392e5cf144
4 changed files with 44 additions and 76 deletions
|
@ -1,35 +0,0 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Generated by Django 1.11.4 on 2017-09-19 08:45
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('event', '0002_auto_20170817_1221'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='activity',
|
|
||||||
options={'default_permissions': ('add', 'delete', 'change', 'view'), 'verbose_name': 'activité', 'verbose_name_plural': 'activités'},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='activitytag',
|
|
||||||
options={'default_permissions': ('add', 'delete', 'change', 'view'), 'verbose_name': 'tag', 'verbose_name_plural': 'tags'},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='activitytemplate',
|
|
||||||
options={'default_permissions': ('add', 'delete', 'change', 'view'), 'verbose_name': 'template activité', 'verbose_name_plural': 'templates activité'},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='event',
|
|
||||||
options={'default_permissions': ('add', 'delete', 'change', 'view'), 'verbose_name': 'évènement', 'verbose_name_plural': 'évènements'},
|
|
||||||
),
|
|
||||||
migrations.AlterModelOptions(
|
|
||||||
name='place',
|
|
||||||
options={'default_permissions': ('add', 'delete', 'change', 'view'), 'verbose_name': 'lieu', 'verbose_name_plural': 'lieux'},
|
|
||||||
),
|
|
||||||
]
|
|
|
@ -47,7 +47,6 @@ class Event(SubscriptionMixin, models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("évènement")
|
verbose_name = _("évènement")
|
||||||
verbose_name_plural = _("évènements")
|
verbose_name_plural = _("évènements")
|
||||||
default_permissions = ('add', 'delete', 'change', 'view')
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
@ -87,7 +86,6 @@ class Place(EventSpecificMixin, models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("lieu")
|
verbose_name = _("lieu")
|
||||||
verbose_name_plural = _("lieux")
|
verbose_name_plural = _("lieux")
|
||||||
default_permissions = ('add', 'delete', 'change', 'view')
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -115,7 +113,6 @@ class ActivityTag(EventSpecificMixin, models.Model):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("tag")
|
verbose_name = _("tag")
|
||||||
verbose_name_plural = _("tags")
|
verbose_name_plural = _("tags")
|
||||||
default_permissions = ('add', 'delete', 'change', 'view')
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -181,7 +178,6 @@ class ActivityTemplate(AbstractActivityTemplate):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("template activité")
|
verbose_name = _("template activité")
|
||||||
verbose_name_plural = _("templates activité")
|
verbose_name_plural = _("templates activité")
|
||||||
default_permissions = ('add', 'delete', 'change', 'view')
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.title
|
return self.title
|
||||||
|
@ -229,7 +225,6 @@ class Activity(AbstractActivityTemplate):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _("activité")
|
verbose_name = _("activité")
|
||||||
verbose_name_plural = _("activités")
|
verbose_name_plural = _("activités")
|
||||||
default_permissions = ('add', 'delete', 'change', 'view')
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.get_herited('title')
|
return self.get_herited('title')
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save, post_migrate
|
||||||
from django.apps import apps
|
from django.apps import apps
|
||||||
from django.contrib.contenttypes.models import ContentType
|
from django.contrib.contenttypes.models import ContentType
|
||||||
from django.contrib.auth.models import Permission
|
from django.contrib.auth.models import Permission
|
||||||
|
@ -16,19 +16,36 @@ def create_groups_for_event(sender, **kwargs):
|
||||||
event=event
|
event=event
|
||||||
)
|
)
|
||||||
|
|
||||||
# Models having event-specific permissions
|
|
||||||
models = [model for model in apps.get_models()
|
|
||||||
if getattr(model, 'needs_event_permissions', False)]
|
|
||||||
|
|
||||||
for model in models:
|
|
||||||
|
|
||||||
for perm in Permission.objects.filter(
|
for perm in Permission.objects.filter(
|
||||||
content_type=ContentType.objects.get_for_model(model)
|
content_type=ContentType.objects.get_for_model(Event),
|
||||||
):
|
codename__contains="event_"):
|
||||||
print(perm.codename)
|
|
||||||
assign_perm(perm.codename, orgas, event)
|
assign_perm(perm.codename, orgas, event)
|
||||||
|
|
||||||
EventGroup.objects.create(
|
EventGroup.objects.create(
|
||||||
name="{}_participants".format(event.slug),
|
name="{}_participants".format(event.slug),
|
||||||
event=event,
|
event=event,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(post_migrate)
|
||||||
|
def create_event_permissions(sender, **kwargs):
|
||||||
|
|
||||||
|
def event_specific_permissions():
|
||||||
|
opes = ['Add', 'Change', 'Delete']
|
||||||
|
models = [model.__name__.lower() for model in apps.get_models()
|
||||||
|
if getattr(model, 'needs_event_permissions', False)]
|
||||||
|
|
||||||
|
return [
|
||||||
|
('event_{}_{}'.format(op.lower(), model),
|
||||||
|
'{} {} for event'.format(op, model))
|
||||||
|
for op in opes
|
||||||
|
for model in models
|
||||||
|
]
|
||||||
|
|
||||||
|
content_type = ContentType.objects.get_for_model(Event)
|
||||||
|
for (code, verbose) in event_specific_permissions():
|
||||||
|
Permission.objects.get_or_create(
|
||||||
|
name=verbose,
|
||||||
|
content_type=content_type,
|
||||||
|
codename=code
|
||||||
|
)
|
||||||
|
|
|
@ -160,6 +160,10 @@ class ActivityTagColorTest(TestCase):
|
||||||
class EventPermissionTest(TestCase):
|
class EventPermissionTest(TestCase):
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpTestData(cls):
|
def setUpTestData(cls):
|
||||||
|
cls.user_perm = User.objects.create(username="userperm")
|
||||||
|
cls.user_noperm = User.objects.create(username="usernoperm")
|
||||||
|
cls.user_groupperm = User.objects.create(username="usergroupperm")
|
||||||
|
cls.user_groupnoperm = User.objects.create(username="usergroupnoperm")
|
||||||
cls.root = User.objects.create_superuser(
|
cls.root = User.objects.create_superuser(
|
||||||
username="root",
|
username="root",
|
||||||
email="toto@toto.io",
|
email="toto@toto.io",
|
||||||
|
@ -174,21 +178,6 @@ class EventPermissionTest(TestCase):
|
||||||
ending_date=timezone.now() + timedelta(days=1),
|
ending_date=timezone.now() + timedelta(days=1),
|
||||||
)
|
)
|
||||||
|
|
||||||
models = [model for model in apps.get_models()
|
|
||||||
if getattr(model, 'needs_event_permissions', False)]
|
|
||||||
|
|
||||||
cls.perms = []
|
|
||||||
for model in models:
|
|
||||||
|
|
||||||
for perm in Permission.objects.filter(
|
|
||||||
content_type=ContentType.objects.get_for_model(model)
|
|
||||||
):
|
|
||||||
cls.perms.append(perm.codename)
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
self.user_perm = User.objects.create(username="userperm")
|
|
||||||
self.user_noperm = User.objects.create(username="usernoperm")
|
|
||||||
|
|
||||||
def test_event_groups(self):
|
def test_event_groups(self):
|
||||||
groups = EventGroup.objects.filter(
|
groups = EventGroup.objects.filter(
|
||||||
event=self.event
|
event=self.event
|
||||||
|
@ -196,18 +185,20 @@ class EventPermissionTest(TestCase):
|
||||||
self.assertEqual(groups.count(), 2)
|
self.assertEqual(groups.count(), 2)
|
||||||
|
|
||||||
def test_individual_perms(self):
|
def test_individual_perms(self):
|
||||||
for perm in self.perms:
|
assign_perm("event_add_place", self.user_perm, self.event)
|
||||||
assign_perm(perm, self.user_perm, self.event)
|
self.assertTrue(self.user_perm.has_perm("event_add_place", self.event))
|
||||||
self.assertTrue(self.user_perm.has_perm(perm, self.event))
|
self.assertFalse(self.user_noperm.has_perm("event_add_place",
|
||||||
self.assertFalse(self.user_noperm.has_perm(perm, self.event))
|
self.event))
|
||||||
|
|
||||||
def test_group_perms(self):
|
def test_group_perms(self):
|
||||||
orgas = EventGroup.objects.get(
|
orgas = EventGroup.objects.get(
|
||||||
name="{}_orgas".format(self.event.slug),
|
name="{}_orgas".format(self.event.slug),
|
||||||
)
|
)
|
||||||
self.user_groupperm.groups.add(orgas)
|
self.user_groupperm.groups.add(orgas)
|
||||||
for perm in self.perms:
|
for perm in Permission.objects.filter(
|
||||||
self.assertTrue(self.user_perm.has_perm(perm,
|
content_type=ContentType.objects.get_for_model(Event),
|
||||||
|
codename__contains="event_"):
|
||||||
|
self.assertTrue(self.user_groupperm.has_perm(perm.codename,
|
||||||
self.event))
|
self.event))
|
||||||
self.assertFalse(self.user_noperm.has_perm(perm,
|
self.assertFalse(self.user_groupnoperm.has_perm(perm.codename,
|
||||||
self.event))
|
self.event))
|
||||||
|
|
Loading…
Reference in a new issue