- infrasynth.configs: typed multi-tenant config store (registry, service, secrets, cache) + public config_changed/config_reset signals and API - emit the declared-but-dead signals (features flags/overrides, scheduler task_completed/task_failed, tenancy tenant_updated, audit model_changed) and per-model audit field exclusions - security: permission catalog (security_permission), Django-style model-derived AutoPermission, PermissionRegistry, RoleAssignment, global-or-tenant Grant/Revoke, catalog API - consolidate the permission surface: PermissionRegistry only (drop the settings dict), IsAuthenticatedAndPermitted aliases HybridPermission, require_permission replaced by required_permissions + require_all - packaging: add [build-system]; add Forgejo publish workflow (.forgejo)
14 lines
542 B
Python
14 lines
542 B
Python
from django.urls import include, path
|
|
from rest_framework.routers import DefaultRouter
|
|
|
|
from .views import FeatureFlagOverrideViewSet, FeatureFlagViewSet
|
|
|
|
router = DefaultRouter()
|
|
# Register the "overrides" collection before the empty-prefix viewset; otherwise
|
|
# the flags detail route ``^(?P<pk>[^/.]+)/$`` shadows ``overrides/``.
|
|
router.register(r"overrides", FeatureFlagOverrideViewSet, basename="feature-overrides")
|
|
router.register(r"", FeatureFlagViewSet, basename="feature-flags")
|
|
|
|
urlpatterns = [
|
|
path("", include(router.urls)),
|
|
]
|