allow to set email and password as lxc-install.sh parameter

This commit is contained in:
Piotr Cichosz
2019-05-26 23:24:27 +02:00
parent 1f1a23d19f
commit cd3e8f7f8a
2 changed files with 133 additions and 29 deletions

View File

@@ -0,0 +1,38 @@
from django.contrib.auth.management.commands import createsuperuser
from django.core.management import CommandError
class Command(createsuperuser.Command):
help = 'Crate a superuser, and allow password to be provided'
def add_arguments(self, parser):
super(Command, self).add_arguments(parser)
parser.add_argument(
'--password', dest='password', default=None,
help='Specifies the password for the superuser.',
)
parser.add_argument(
'--preserve', dest='preserve', default=False, action='store_true',
help='Exit normally if the user already exists.',
)
def handle(self, *args, **options):
password = options.get('password')
username = options.get('username')
database = options.get('database')
if password and not username:
raise CommandError("--username is required if specifying --password")
if username and options.get('preserve'):
exists = self.UserModel._default_manager.db_manager(database).filter(username=username).exists()
if exists:
self.stdout.write("User exists, exiting normally due to --preserve")
return
super(Command, self).handle(*args, **options)
if password:
user = self.UserModel._default_manager.db_manager(database).get(username=username)
user.set_password(password)
user.save()