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