You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

52 lines
1.9 KiB

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."))