Source code for ox.core.signals

import logging

from django.db.models.signals import post_migrate
from django.contrib.auth.models import Group, Permission
from django.contrib.contenttypes.models import ContentType
from django.dispatch import receiver


logger = logging.getLogger()


[docs] @receiver(post_migrate) def create_app_groups(sender, app_config, *args, **kwargs): """This creates users groups for applications.""" if label := getattr(app_config, "verbose_name"): app_label = str(label) else: app_label = app_config.label.replace("_", " ").capitalize() staff, _ = Group.objects.get_or_create(name=app_label) for model in app_config.get_models(): content_type = ContentType.objects.get_for_model(model) perms = Permission.objects.filter(content_type=content_type) for perm in perms: codename = perm.codename if codename.startswith(("add_", "change_", "delete_")): staff.permissions.add(perm) logger.info(f"Groups updated for app: {app_label}")