Nomi78600's picture
"fix:Make_createsuperuser_command_idempotent"
02c6c4b
import os
from django.core.management.base import BaseCommand
from django.contrib.auth import get_user_model
User = get_user_model()
class Command(BaseCommand):
help = 'Creates or updates an admin user from environment variables.'
def handle(self, *args, **options):
username = os.environ.get('DJANGO_SUPERUSER_USERNAME')
email = os.environ.get('DJANGO_SUPERUSER_EMAIL')
password = os.environ.get('DJANGO_SUPERUSER_PASSWORD')
if not all([username, email, password]):
self.stdout.write(self.style.ERROR('Missing superuser environment variables. Skipping superuser creation/update.'))
return
if User.objects.filter(username=username).exists():
self.stdout.write(f'Admin user "{username}" already exists. Ensuring password and email are up to date.')
user = User.objects.get(username=username)
user.set_password(password)
user.email = email
user.save()
self.stdout.write(self.style.SUCCESS(f'Admin user "{username}" updated successfully.'))
else:
self.stdout.write(f'Creating admin user "{username}"...')
User.objects.create_superuser(username=username, email=email, password=password)
self.stdout.write(self.style.SUCCESS(f'Admin user "{username}" created successfully.'))