This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import getpass
|
||||
import os
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.password_validation import validate_password
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.db import transaction
|
||||
|
||||
from finance.models import Membership, Organization
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Create the initial organization administrator without a default password"
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("--username", required=True)
|
||||
parser.add_argument("--organization", required=True)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
username = options["username"]
|
||||
if User.objects.filter(username=username).exists():
|
||||
raise CommandError("Username already exists; no changes made")
|
||||
password = os.environ.get("BOOTSTRAP_PASSWORD") or getpass.getpass("Administrator password: ")
|
||||
validate_password(password, User(username=username))
|
||||
with transaction.atomic():
|
||||
org = Organization.objects.create(name=options["organization"])
|
||||
user = User.objects.create_user(username=username, password=password)
|
||||
Membership.objects.create(user=user, organization=org, role="admin")
|
||||
self.stdout.write("Administrator created")
|
||||
Reference in New Issue
Block a user