settings.AIRCOX_DEFAULT_USER_GROUPS: multiple groups with customizable permissions
This commit is contained in:
parent
65b4d8244d
commit
777dc475a5
|
@ -6,14 +6,18 @@ from django.conf import settings
|
||||||
def ensure (key, default):
|
def ensure (key, default):
|
||||||
globals()[key] = getattr(settings, key, default)
|
globals()[key] = getattr(settings, key, default)
|
||||||
|
|
||||||
# name of the group assigned by default to all users that are created
|
# group to assign to users at their creation, along with the permissions
|
||||||
ensure('AIRCOX_DEFAULT_USER_GROUP', 'Radio Hosts')
|
# to add to each group.
|
||||||
ensure('AIRCOX_DEFAULT_USER_GROUP_PERMS', (
|
ensure('AIRCOX_DEFAULT_USER_GROUPS', {
|
||||||
'change_program', 'change_diffusion',
|
'Radio Hosts': (
|
||||||
'change_sound',
|
'change_program', 'change_diffusion',
|
||||||
'add_track', 'change_track', 'delete_track',
|
'change_sound',
|
||||||
'add_tag', 'change_tag', 'delete_tag',
|
'add_track', 'change_track', 'delete_track',
|
||||||
))
|
'add_tag', 'change_tag', 'delete_tag',
|
||||||
|
),
|
||||||
|
# ensure user can log in using Wagtail
|
||||||
|
'Editors': None
|
||||||
|
})
|
||||||
|
|
||||||
# Directory for the programs data
|
# Directory for the programs data
|
||||||
ensure('AIRCOX_PROGRAMS_DIR',
|
ensure('AIRCOX_PROGRAMS_DIR',
|
||||||
|
|
|
@ -17,25 +17,25 @@ import aircox.settings as settings
|
||||||
#
|
#
|
||||||
@receiver(post_save, sender=User)
|
@receiver(post_save, sender=User)
|
||||||
def user_default_groups(sender, instance, created, *args, **kwargs):
|
def user_default_groups(sender, instance, created, *args, **kwargs):
|
||||||
groupName = settings.AIRCOX_DEFAULT_USER_GROUP
|
if not created or instance.is_superuser:
|
||||||
if not created or instance.is_superuser or \
|
|
||||||
instance.groups.filter(name = groupName).count():
|
|
||||||
return
|
return
|
||||||
|
|
||||||
group, created = Group.objects.get_or_create(name = groupName)
|
for groupName, permissions in settings.AIRCOX_DEFAULT_USER_GROUPS.items():
|
||||||
if created:
|
if instance.groups.filter(name = groupName).count():
|
||||||
for codename in settings.AIRCOX_DEFAULT_USER_GROUP_PERMS:
|
continue
|
||||||
permission = Permission.objects.filter(codename = codename).first()
|
|
||||||
if permission:
|
|
||||||
group.permissions.add(permission)
|
|
||||||
group.save()
|
|
||||||
|
|
||||||
instance.groups.add(group)
|
group, created = Group.objects.get_or_create(name = groupName)
|
||||||
|
if created and permissions:
|
||||||
|
for codename in permissions:
|
||||||
|
permission = Permission.objects.filter(codename = codename).first()
|
||||||
|
if permission:
|
||||||
|
group.permissions.add(permission)
|
||||||
|
group.save()
|
||||||
|
instance.groups.add(group)
|
||||||
|
|
||||||
|
|
||||||
# FIXME: avoid copy of the code in schedule_post_saved and
|
# FIXME: avoid copy of the code in schedule_post_saved and
|
||||||
# schedule_pre_delete
|
# schedule_pre_delete
|
||||||
|
|
||||||
@receiver(post_save, sender=models.Schedule)
|
@receiver(post_save, sender=models.Schedule)
|
||||||
def schedule_post_saved(sender, instance, created, *args, **kwargs):
|
def schedule_post_saved(sender, instance, created, *args, **kwargs):
|
||||||
# TODO: case instance.program has changed
|
# TODO: case instance.program has changed
|
||||||
|
|
Loading…
Reference in New Issue
Block a user