From a470767088b7594d91bdcffaad23a0c51510b525 Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Mon, 28 Jul 2025 22:31:55 +0200 Subject: [PATCH] feat(contrib/management): add command to create a superuser from env variables --- .../management/commands/ensuresuperuser.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 jdav_web/contrib/management/commands/ensuresuperuser.py diff --git a/jdav_web/contrib/management/commands/ensuresuperuser.py b/jdav_web/contrib/management/commands/ensuresuperuser.py new file mode 100644 index 0000000..d701d64 --- /dev/null +++ b/jdav_web/contrib/management/commands/ensuresuperuser.py @@ -0,0 +1,28 @@ +import os +from django.contrib.auth import get_user_model +from django.core.management.base import BaseCommand + +class Command(BaseCommand): + help = "Creates a super-user non-interactively if it doesn't exist." + + def handle(self, *args, **options): + User = get_user_model() + + username = os.environ.get('DJANGO_SUPERUSER_USERNAME', '') + password = os.environ.get('DJANGO_SUPERUSER_PASSWORD', '') + + if not username or not password: + self.stdout.write( + self.style.WARNING('Superuser data was not set. Skipping.') + ) + return + + if not User.objects.filter(username=username).exists(): + User.objects.create_superuser(username=username, password=password) + self.stdout.write( + self.style.SUCCESS('Successfully created superuser.') + ) + else: + self.stdout.write( + self.style.SUCCESS('Superuser with configured username already exists. Skipping.') + )