46 lines
1.8 KiB
Python
46 lines
1.8 KiB
Python
import os
|
|
from django.core.management.base import BaseCommand
|
|
from django.contrib.auth import get_user_model
|
|
from api.user.models import UserProfile
|
|
|
|
|
|
class Command(BaseCommand):
|
|
"""
|
|
Creates an admin user non-interactively if it doesn't exist.
|
|
Reads credentials from environment variables:
|
|
- DJANGO_SUPERUSER_USERNAME
|
|
- DJANGO_SUPERUSER_PASSWORD
|
|
- DJANGO_SUPERUSER_EMAIL
|
|
"""
|
|
|
|
help = "Creates a superuser non-interactively if it does not exist."
|
|
|
|
def handle(self, *args, **options):
|
|
User = get_user_model()
|
|
username = os.environ.get("DJANGO_SUPERUSER_USERNAME")
|
|
password = os.environ.get("DJANGO_SUPERUSER_PASSWORD")
|
|
email = os.environ.get("DJANGO_SUPERUSER_EMAIL")
|
|
|
|
if not username or not password or not email:
|
|
self.stdout.write(
|
|
self.style.WARNING(
|
|
"Skipping superuser creation: DJANGO_SUPERUSER_USERNAME, "
|
|
"DJANGO_SUPERUSER_PASSWORD, and DJANGO_SUPERUSER_EMAIL must be set."
|
|
)
|
|
)
|
|
return # Exit the command gracefully
|
|
|
|
if not User.objects.filter(username=username).exists():
|
|
self.stdout.write(self.style.SUCCESS(f"Creating superuser: {username}"))
|
|
try:
|
|
User.objects.create_superuser(
|
|
username=username, email=email, password=password
|
|
)
|
|
UserProfile.objects.create(user=User.objects.get(username=username))
|
|
self.stdout.write(self.style.SUCCESS("Superuser created successfully."))
|
|
except Exception as e:
|
|
self.stderr.write(self.style.ERROR(f"Error creating superuser: {e}"))
|
|
else:
|
|
self.stdout.write(
|
|
self.style.NOTICE(f"Superuser '{username}' already exists.")
|
|
)
|