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 = "Erstellt einen initialen Admin-Benutzer (Superuser) für das Portal." def add_arguments(self, parser): parser.add_argument('--username', type=str, default=os.getenv('ADMIN_USERNAME', 'admin'), help='Benutzername für den Admin') parser.add_argument('--email', type=str, default=os.getenv('ADMIN_EMAIL', 'admin@beispiel.de'), help='E-Mail-Adresse für den Admin') parser.add_argument('--password', type=str, default=os.getenv('ADMIN_PASSWORD', ''), help='Passwort für den Admin') def handle(self, *args, **options): username = options['username'] email = options['email'] password = options['password'] if not password: self.stderr.write(self.style.ERROR("Fehler: Bitte gib ein Passwort mit --password an oder setze ADMIN_PASSWORD als Umgebungsvariable.")) return user, created = User.objects.get_or_create( username=username, defaults={'email': email} ) user.email = email user.set_password(password) user.is_superuser = True user.is_staff = True user.is_admin_user = True user.is_approved = True user.is_email_verified = True user.is_active = True user.save() if created: self.stdout.write(self.style.SUCCESS(f"✅ Initialer Admin '{username}' ({email}) wurde erfolgreich erstellt!")) else: self.stdout.write(self.style.SUCCESS(f"✅ Passwort & Admin-Rechte für bestehenden Benutzer '{username}' ({email}) wurden aktualisiert!"))