diff --git a/CHANGELOG.md b/CHANGELOG.md index 35757b79..b4bfeb92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ adhérents ni des cotisations. - Ajout d'un bouton pour supprimer un compte - Le nombre d'adhérent⋅es est affiché sur la page d'accueil +- le groupe BDS a les bonnes permissions ### Site du COF diff --git a/bds/__init__.py b/bds/__init__.py index e69de29b..5c287005 100644 --- a/bds/__init__.py +++ b/bds/__init__.py @@ -0,0 +1 @@ +default_app_config = "bds.apps.BdsConfig" diff --git a/bds/apps.py b/bds/apps.py index db0cafcb..5c0fa0fd 100644 --- a/bds/apps.py +++ b/bds/apps.py @@ -1,5 +1,29 @@ +from django import apps as global_apps from django.apps import AppConfig +from django.db.models import Q +from django.db.models.signals import post_migrate + + +def bds_group_perms(app_config, apps=global_apps, **kwargs): + try: + Permission = apps.get_model("auth", "Permission") + Group = apps.get_model("auth", "Group") + + group = Group.objects.get(name="Burô du BDS") + perms = Permission.objects.filter( + Q(content_type__app_label="bds") + | Q(content_type__app_label="auth") & Q(content_type__model="user") + ) + group.permissions.set(perms) + group.save() + + except (LookupError, Group.DoesNotExist): + return class BdsConfig(AppConfig): name = "bds" + verbose_name = "Gestion des adhérent·e·s du BDS" + + def ready(self): + post_migrate.connect(bds_group_perms, sender=self) diff --git a/bds/migrations/0002_bds_group.py b/bds/migrations/0002_bds_group.py index 9b54d35c..a55e76eb 100644 --- a/bds/migrations/0002_bds_group.py +++ b/bds/migrations/0002_bds_group.py @@ -1,24 +1,11 @@ # Generated by Django 2.2 on 2019-07-17 14:56 -from django.contrib.auth.management import create_permissions from django.db import migrations -from django.db.models import Q def create_bds_buro_group(apps, schema_editor): - for app_config in apps.get_app_configs(): - create_permissions(app_config, apps=apps, verbosity=0) - Group = apps.get_model("auth", "Group") - Permission = apps.get_model("auth", "Permission") - group, created = Group.objects.get_or_create(name="Burô du BDS") - if created: - perms = Permission.objects.filter( - Q(content_type__app_label="bds") - | Q(content_type__app_label="auth") & Q(content_type__model="user") - ) - group.permissions.set(perms) - group.save() + Group.objects.get_or_create(name="Burô du BDS") class Migration(migrations.Migration):