from django.core.management.base import BaseCommand from django.contrib.auth.models import Group, Permission from django.contrib.contenttypes.models import ContentType from apps.account.models import User class Command(BaseCommand): help = 'Create default groups and assign permissions to them' def handle(self, *args, **kwargs): # تعریف گروه‌ها و پرمیشن‌ها groups_permissions = { "Professor Group": [ "view_user", "add_user", "change_user" ], "Client Group": [ "view_user" ], "Admin Group": [ "view_user", "add_user", "change_user", "delete_user" ], "Super Admin Group": [ "view_user", "add_user", "change_user", "delete_user", "manage_permissions" ], "Student Group": [ "view_user" ] } content_type = ContentType.objects.get_for_model(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"Group '{group_name}' created successfully.")) else: self.stdout.write(self.style.WARNING(f"Group '{group_name}' already exists.")) for perm_codename in permissions: permission, created = Permission.objects.get_or_create( codename=perm_codename, defaults={ 'name': f"Can {perm_codename.replace('_', ' ')} User", 'content_type': content_type } ) group.permissions.add(permission) self.stdout.write(self.style.SUCCESS("All groups and permissions have been created successfully."))