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