Source code for tcms.core.management.commands.refresh_permissions

from django.conf import settings
from django.contrib.auth.models import Group
from django.core.management import call_command
from django.core.management.base import BaseCommand

from tcms.utils.permissions import assign_default_group_permissions


[docs]class Command(BaseCommand): help = "Refresh permissions for the special 'Administrator' & 'Tester' groups." group_model = Group admin_permissions_filter = {} tester_permissions_filter = {}
[docs] def add_arguments(self, parser): parser.add_argument( "--noinput", "--no-input", action="store_false", dest="interactive", help="Automatic mode. Does not require user input", )
[docs] def handle(self, *args, **kwargs): """ This is the command entry-point! """ self.execute_commands(*args, **kwargs) if "tenant_groups" in settings.INSTALLED_APPS: call_command( "refresh_tenant_permissions", *args, **kwargs, )
[docs] def execute_commands(self, *args, **kwargs): """ This is the actual implementation. Can be overriden by inherited classes. """ output = None if kwargs["verbosity"]: output = self.stdout call_command("update_permissions", f"--verbosity={kwargs['verbosity']}") # Assign permissions to Tester group if output: self.stdout.write("\nSetting up missing permissions") assign_default_group_permissions( output=output, refresh_all=True, group_model=self.group_model, admin_permissions_filter=self.admin_permissions_filter, tester_permissions_filter=self.tester_permissions_filter, ) if output: self.stdout.write("Done.") # Removing stale permissions if output: self.stdout.write("\nRemoving stale permissions") call_command( "remove_stale_contenttypes", "--include-stale-apps", f"--verbosity={kwargs['verbosity']}", interactive=kwargs["interactive"], ) call_command("clean_orphan_obj_perms", f"--verbosity={kwargs['verbosity']}") if output: self.stdout.write("Done.")