Files
fonrey/apps/tenant/signals.py
ishenwei aaf398196a feat(permission): seed 154 PermissionDefs + 7 builtin roles + matrix + lookups + tenant auto-seed
- data migration apps/permission_def/0002_seed_permission_defs: 154 PermissionDef rows in public schema
- service apps.permission.services.seed_default_roles: 7 builtin roles + 154x7 RolePermission matrix
- service apps.setting.services.seed_default_lookups: LookupGroup/LookupItem defaults per DATA_MODEL_SETTING.md sec 2.3
- apps.tenant.signals: post_save Tenant handler auto-seeds new tenants inside schema_context, errors logged not raised
- apps.tenant.apps.ready() registers the signal
2026-04-30 12:58:34 +08:00

37 lines
1.0 KiB
Python

import logging
from django.db.models.signals import post_save
from django.dispatch import receiver
logger = logging.getLogger(__name__)
def _get_tenant_model():
from django.apps import apps
return apps.get_model("tenant", "Tenant")
def _register():
Tenant = _get_tenant_model()
@receiver(post_save, sender=Tenant)
def on_tenant_created(sender, instance, created, **kwargs):
if not created:
return
if instance.schema_name == "public":
return
from django_tenants.utils import schema_context
from apps.permission.services import seed_default_roles
from apps.setting.services import seed_default_lookups
try:
with schema_context(instance.schema_name):
seed_default_roles(instance.schema_name)
seed_default_lookups(instance.schema_name)
except Exception:
logger.exception(
"Failed to seed defaults for tenant %s", instance.schema_name
)