forked from DGNum/gestioCOF
Add custommail perms to staff groups
This commit is contained in:
parent
29d288c567
commit
52aadc636b
6 changed files with 34 additions and 10 deletions
|
@ -11,7 +11,11 @@ class BDSConfig(AppConfig):
|
||||||
|
|
||||||
def setup_bds_perms(sender, apps, **kwargs):
|
def setup_bds_perms(sender, apps, **kwargs):
|
||||||
from bds.models import get_bds_assoc
|
from bds.models import get_bds_assoc
|
||||||
setup_assoc_perms(apps, get_bds_assoc, buro_of_apps=['gestion', 'bds'])
|
setup_assoc_perms(
|
||||||
|
apps, get_bds_assoc,
|
||||||
|
buro_of_apps=['gestion', 'bds'],
|
||||||
|
perms=["custommail.add_custommail", "custommail.change_custommail"]
|
||||||
|
)
|
||||||
|
|
||||||
# Setup permissions of defaults groups of BDS association after Permission
|
# Setup permissions of defaults groups of BDS association after Permission
|
||||||
# instances have been created, i.e. after applying migrations.
|
# instances have been created, i.e. after applying migrations.
|
||||||
|
|
|
@ -11,7 +11,11 @@ class COFConfig(AppConfig):
|
||||||
|
|
||||||
def setup_cof_perms(sender, apps, **kwargs):
|
def setup_cof_perms(sender, apps, **kwargs):
|
||||||
from cof.models import get_cof_assoc
|
from cof.models import get_cof_assoc
|
||||||
setup_assoc_perms(apps, get_cof_assoc, buro_of_apps=['gestion', 'cof'])
|
setup_assoc_perms(
|
||||||
|
apps, get_cof_assoc,
|
||||||
|
buro_of_apps=['gestion', 'cof'],
|
||||||
|
perms=["custommail.add_custommail", "custommail.change_custommail"]
|
||||||
|
)
|
||||||
|
|
||||||
# Setup permissions of defaults groups of BDS association after Permission
|
# Setup permissions of defaults groups of BDS association after Permission
|
||||||
# instances have been created, i.e. after applying migrations.
|
# instances have been created, i.e. after applying migrations.
|
||||||
|
|
1
cof/settings/secret.py
Symbolic link
1
cof/settings/secret.py
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
secret_example.py
|
|
@ -6,7 +6,7 @@ class GestionConfig(AppConfig):
|
||||||
verbose_name = "Gestion des outils communs COF/BDS"
|
verbose_name = "Gestion des outils communs COF/BDS"
|
||||||
|
|
||||||
|
|
||||||
def setup_assoc_perms(apps, assoc_getter, buro_of_apps=[], **kwargs):
|
def setup_assoc_perms(apps, assoc_getter, buro_of_apps=[], perms=[]):
|
||||||
try:
|
try:
|
||||||
# Association and Permission models are required to be ready to setup
|
# Association and Permission models are required to be ready to setup
|
||||||
# perms.
|
# perms.
|
||||||
|
@ -14,4 +14,4 @@ def setup_assoc_perms(apps, assoc_getter, buro_of_apps=[], **kwargs):
|
||||||
apps.get_app_config('auth')
|
apps.get_app_config('auth')
|
||||||
except LookupError:
|
except LookupError:
|
||||||
return
|
return
|
||||||
assoc_getter().setup_perms(buro_of_apps=buro_of_apps)
|
assoc_getter().setup_perms(buro_of_apps=buro_of_apps, perms=perms)
|
||||||
|
|
|
@ -105,7 +105,7 @@ class Association(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def setup_perms(self, buro_of_apps=[]):
|
def setup_perms(self, buro_of_apps=[], perms=[]):
|
||||||
"""
|
"""
|
||||||
Setup permissions of the staff and members groups.
|
Setup permissions of the staff and members groups.
|
||||||
|
|
||||||
|
@ -118,6 +118,7 @@ class Association(models.Model):
|
||||||
|
|
||||||
Arguments
|
Arguments
|
||||||
buro_of_apps (list of 'app_label', optional)
|
buro_of_apps (list of 'app_label', optional)
|
||||||
|
perms (list of permission codes, optional)
|
||||||
|
|
||||||
Should be used in receiver of 'post_migrate' signal, after permissions
|
Should be used in receiver of 'post_migrate' signal, after permissions
|
||||||
creation.
|
creation.
|
||||||
|
@ -134,10 +135,10 @@ class Association(models.Model):
|
||||||
else:
|
else:
|
||||||
group.permissions.add(perm)
|
group.permissions.add(perm)
|
||||||
|
|
||||||
app_label = self.name.lower()
|
assoc_app_label = self.name.lower()
|
||||||
|
|
||||||
# Buro group has perm '<assoc>.buro'.
|
# Buro group has perm '<assoc>.buro'.
|
||||||
try_add_perm(self.staff_group, app_label, 'buro')
|
try_add_perm(self.staff_group, assoc_app_label, 'buro')
|
||||||
|
|
||||||
# Add all permissions of applications given 'buro_of_apps'.
|
# Add all permissions of applications given 'buro_of_apps'.
|
||||||
apps_perms = Permission.objects.filter(
|
apps_perms = Permission.objects.filter(
|
||||||
|
@ -145,8 +146,13 @@ class Association(models.Model):
|
||||||
)
|
)
|
||||||
self.staff_group.permissions.add(*apps_perms)
|
self.staff_group.permissions.add(*apps_perms)
|
||||||
|
|
||||||
|
# Add extra permissions from 'perms'
|
||||||
|
for perm in perms:
|
||||||
|
app_label, codename = perm.split('.', maxsplit=1)
|
||||||
|
try_add_perm(self.staff_group, app_label, codename)
|
||||||
|
|
||||||
# Members have perm '<assoc>.member'.
|
# Members have perm '<assoc>.member'.
|
||||||
try_add_perm(self.members_group, app_label, 'member')
|
try_add_perm(self.members_group, assoc_app_label, 'member')
|
||||||
|
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
|
|
|
@ -127,8 +127,9 @@ class AuthTest(TestCase):
|
||||||
class AssociationTests(TestCase):
|
class AssociationTests(TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.gestion_p = Permission.objects.filter(
|
self.custommail_p = Permission.objects.filter(
|
||||||
content_type__app_label='gestion',
|
content_type__app_label="custommail",
|
||||||
|
codename__in=["add_custommail", "change_custommail"]
|
||||||
)
|
)
|
||||||
|
|
||||||
def assertAllAppPerms(self, group, app_label):
|
def assertAllAppPerms(self, group, app_label):
|
||||||
|
@ -153,6 +154,10 @@ class AssociationTests(TestCase):
|
||||||
self.assertAllAppPerms(cof_assoc.staff_group, 'cof')
|
self.assertAllAppPerms(cof_assoc.staff_group, 'cof')
|
||||||
self.assertAllAppPerms(cof_assoc.staff_group, 'gestion')
|
self.assertAllAppPerms(cof_assoc.staff_group, 'gestion')
|
||||||
|
|
||||||
|
# + some permissions in custommail
|
||||||
|
for p in self.custommail_p:
|
||||||
|
self.assertIn(p, cof_assoc.staff_group.permissions.all())
|
||||||
|
|
||||||
# Check cof members group has 'cof.member' permission.
|
# Check cof members group has 'cof.member' permission.
|
||||||
member_perm = Permission.objects.get(
|
member_perm = Permission.objects.get(
|
||||||
content_type__app_label='cof',
|
content_type__app_label='cof',
|
||||||
|
@ -174,6 +179,10 @@ class AssociationTests(TestCase):
|
||||||
self.assertAllAppPerms(bds_assoc.staff_group, 'bds')
|
self.assertAllAppPerms(bds_assoc.staff_group, 'bds')
|
||||||
self.assertAllAppPerms(bds_assoc.staff_group, 'gestion')
|
self.assertAllAppPerms(bds_assoc.staff_group, 'gestion')
|
||||||
|
|
||||||
|
# + some permissions in custommail
|
||||||
|
for p in self.custommail_p:
|
||||||
|
self.assertIn(p, bds_assoc.staff_group.permissions.all())
|
||||||
|
|
||||||
# Check cof members group has 'bds.member' permission.
|
# Check cof members group has 'bds.member' permission.
|
||||||
member_perm = Permission.objects.get(
|
member_perm = Permission.objects.get(
|
||||||
content_type__app_label='bds',
|
content_type__app_label='bds',
|
||||||
|
|
Loading…
Reference in a new issue