from django.core.management.base import BaseCommand from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType from apps.accounts.models import User class Command(BaseCommand): help = 'Create default user groups with appropriate permissions' def handle(self, *args, **options): groups_permissions = { 'admin': [ 'add_user', 'change_user', 'delete_user', 'view_user', 'add_group', 'change_group', 'delete_group', 'view_group', ], 'staff': [ 'view_user', 'change_user', 'view_group', ], 'user': [ 'view_user', ] } for group_name, permissions in groups_permissions.items(): group, created = Group.objects.get_or_create(name=group_name) if created: self.stdout.write( self.style.SUCCESS(f'Created group: {group_name}') ) else: self.stdout.write( self.style.WARNING(f'Group already exists: {group_name}') ) for permission_name in permissions: try: permission = Permission.objects.get(codename=permission_name) group.permissions.add(permission) except Permission.DoesNotExist: self.stdout.write( self.style.ERROR(f'Permission not found: {permission_name}') ) group.save() self.stdout.write( self.style.SUCCESS(f'Configured permissions for {group_name}') ) self.stdout.write( self.style.SUCCESS('Successfully created all default groups') )