authentik.core.management.commands.repair_permissions

Repair missing permissions

 1"""Repair missing permissions"""
 2
 3from django.apps import apps
 4from django.contrib.auth.management import create_permissions
 5from django.core.management import call_command
 6from django.core.management.base import BaseCommand, no_translations
 7from guardian.management import create_anonymous_user
 8
 9from authentik.tenants.models import Tenant
10
11
12class Command(BaseCommand):
13    """Repair missing permissions"""
14
15    @no_translations
16    def handle(self, *args, **options):
17        """Check permissions for all apps"""
18        for tenant in Tenant.objects.filter(ready=True):
19            with tenant:
20                # See https://code.djangoproject.com/ticket/28417
21                # Remove potential lingering old permissions
22                call_command("remove_stale_contenttypes", "--no-input")
23
24                for app in apps.get_app_configs():
25                    self.stdout.write(f"Checking app {app.name} ({app.label})\n")
26                    create_permissions(app, verbosity=0)
27                create_anonymous_user(None, using="default")
class Command(django.core.management.base.BaseCommand):
13class Command(BaseCommand):
14    """Repair missing permissions"""
15
16    @no_translations
17    def handle(self, *args, **options):
18        """Check permissions for all apps"""
19        for tenant in Tenant.objects.filter(ready=True):
20            with tenant:
21                # See https://code.djangoproject.com/ticket/28417
22                # Remove potential lingering old permissions
23                call_command("remove_stale_contenttypes", "--no-input")
24
25                for app in apps.get_app_configs():
26                    self.stdout.write(f"Checking app {app.name} ({app.label})\n")
27                    create_permissions(app, verbosity=0)
28                create_anonymous_user(None, using="default")

Repair missing permissions

def handle(*args, **kwargs):
106    def wrapper(*args, **kwargs):
107        from django.utils import translation
108
109        saved_locale = translation.get_language()
110        translation.deactivate_all()
111        try:
112            res = handle_func(*args, **kwargs)
113        finally:
114            if saved_locale is not None:
115                translation.activate(saved_locale)
116        return res

The type of the None singleton.