from django.conf import settings from django.contrib.auth.models import Group, Permission, User from django.contrib.contenttypes.models import ContentType from django.core.management.base import BaseCommand from users.models import Assignment, Note class Command(BaseCommand): def handle(self, **options): Permission.objects.update_or_create( content_type=ContentType.objects.get_for_model(Note), codename="view_all_notes", defaults={"name": "View all notes"} ) admins, __ = Group.objects.get_or_create(name='Admini') admins.permissions.add( self._get_permission(User, 'view_user'), self._get_permission(User, 'add_user'), self._get_permission(User, 'change_user'), self._get_permission(User, 'delete_user'), self._get_permission(Assignment, 'view_assignment'), self._get_permission(Note, 'view_all_notes'), ) lexicographs, __ = Group.objects.get_or_create(name='Leksykografowie') lexicographs.permissions.add( # TODO ) super_lexicographs, __ = Group.objects.get_or_create(name=settings.SUPER_LEXICOGRAPHS_GROUP_NAME) super_lexicographs.permissions.add( self._get_permission(Assignment, 'view_assignment'), self._get_permission(Note, 'view_all_notes'), ) def _get_permission(self, model, codename) -> Permission: return Permission.objects.get(codename=codename, content_type=ContentType.objects.get_for_model(model))