mirror of
https://github.com/thecyberlearn/modern-django-starter.git
synced 2026-08-18 16:32:54 +00:00
✨ Features: - Complete Django project with authentication - Email/password and social login (Google, Facebook) - Role-based access control (admin, staff, user) - Docker and Docker Compose setup - Production-ready configuration - Static file handling with WhiteNoise - PostgreSQL database integration - Comprehensive documentation - GitHub CI/CD workflows - Dokploy deployment configuration 🚀 Ready for deployment on Dokploy, Heroku, Railway, and other platforms
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
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')
|
|
) |