add test case, update password if changed

This commit is contained in:
jonaswinkler
2021-04-17 14:33:07 +02:00
parent 181bf5f6ef
commit 670bc0331d
3 changed files with 114 additions and 44 deletions

View File

@@ -1,9 +1,13 @@
import logging
import os
from django.contrib.auth.models import User
from django.core.management.base import BaseCommand, CommandError
logger = logging.getLogger("paperless.management.superuser")
class Command(BaseCommand):
help = """
@@ -12,29 +16,25 @@ class Command(BaseCommand):
def handle(self, *args, **options):
PAPERLESS_ADMIN_USER = os.getenv('PAPERLESS_ADMIN_USER')
PAPERLESS_ADMIN_MAIL = os.getenv('PAPERLESS_ADMIN_MAIL', 'root@localhost')
PAPERLESS_ADMIN_PASSWORD = os.getenv('PAPERLESS_ADMIN_PASSWORD')
username = os.getenv('PAPERLESS_ADMIN_USER')
if not username:
return
# If PAPERLESS_ADMIN_USER env variable is set
if PAPERLESS_ADMIN_USER:
try:
# Check if user exists already, leave as is if it does
if User.objects.filter(
username=PAPERLESS_ADMIN_USER).exists():
self.stdout.write(
f'The user "{PAPERLESS_ADMIN_USER}" already exists! Leaving user as is.')
elif PAPERLESS_ADMIN_PASSWORD:
# Create superuser based on env variables
User.objects.create_superuser(
PAPERLESS_ADMIN_USER, PAPERLESS_ADMIN_MAIL, PAPERLESS_ADMIN_PASSWORD)
self.stdout.write(
f'Created superuser "{PAPERLESS_ADMIN_USER}" with provided password.')
else:
self.stdout.write(
f'Did not create superuser "{PAPERLESS_ADMIN_USER}".')
self.stdout.write(
'Make sure you specified "PAPERLESS_ADMIN_PASSWORD" in your "docker-compose.env" file.')
except Exception as error:
self.stdout.write(
f'Exception occured while creating superuser: {error}')
mail = os.getenv('PAPERLESS_ADMIN_MAIL', 'root@localhost')
password = os.getenv('PAPERLESS_ADMIN_PASSWORD')
# Check if user exists already, leave as is if it does
if User.objects.filter(username=username).exists():
user: User = User.objects.get_by_natural_key(username)
user.set_password(password)
user.save()
elif password:
# Create superuser based on env variables
User.objects.create_superuser(username, mail, password)
self.stdout.write(
f'Created superuser "{username}" with provided password.')
else:
self.stdout.write(
f'Did not create superuser "{username}".')
self.stdout.write(
'Make sure you specified "PAPERLESS_ADMIN_PASSWORD" in your "docker-compose.env" file.')