|
|
import os
|
|
|
from django.core.management.base import BaseCommand
|
|
|
from django.contrib.auth.models import User, Group
|
|
|
|
|
|
class Command(BaseCommand):
|
|
|
"""
|
|
|
Create a superuser and user if none exist
|
|
|
Example:
|
|
|
manage.py create_users
|
|
|
"""
|
|
|
|
|
|
help = "Create a superuser and user if none exist"
|
|
|
|
|
|
def handle(self, *args, **options):
|
|
|
|
|
|
users = {
|
|
|
'Superuser': {
|
|
|
'username': os.environ.get('SIRM_SUPER_USER', 'superuser'),
|
|
|
'password': os.environ.get('SIRM_SUPER_PASSWORD', 'SuperuseROJ'),
|
|
|
'email' : os.environ.get('SIRM_SUPER_EMAIL', 'superuser@igp.gob.pe')},
|
|
|
'Developer': {
|
|
|
'username': os.environ.get('SIRM_DEV_USER', 'developer'),
|
|
|
'password': os.environ.get('SIRM_DEV_PASSWORD', 'DevelopeROJ'),
|
|
|
'email' : os.environ.get('SIRM_DEV_EMAIL', 'developer@igp.gob.pe')},
|
|
|
'Operator': {
|
|
|
'username': os.environ.get('SIRM_USER', 'operator'),
|
|
|
'password': os.environ.get('SIRM_PASSWORD', 'OperatoROJ'),
|
|
|
'email' : os.environ.get('SIRM_EMAIL', 'operator@igp.gob.pe')}
|
|
|
}
|
|
|
|
|
|
for key, value in users.items():
|
|
|
if key == 'Superuser':
|
|
|
if User.objects.filter(is_superuser=True):
|
|
|
self.stdout.write(f'Local {key} currently exists')
|
|
|
else:
|
|
|
user, created = User.objects.get_or_create(username=value["username"], first_name=value["username"], email=value["email"], is_superuser = True, is_staff = True)
|
|
|
if created:
|
|
|
user.set_password(value["password"])
|
|
|
user.save()
|
|
|
self.stdout.write(f'Local {key} "{value["username"]}" was created')
|
|
|
else:
|
|
|
self.stdout.write(f'Unable to create this local superuser: "superuser already exists"')
|
|
|
else:
|
|
|
if User.objects.filter(groups__name=key):
|
|
|
if User.objects.filter(groups__name=key, is_superuser=True):
|
|
|
self.stdout.write(f"{key} group must not have a superuser, remove superusers and create a new user")
|
|
|
else:
|
|
|
self.stdout.write(f"Local {key} currently exists")
|
|
|
else:
|
|
|
user, created = User.objects.get_or_create(username=value["username"], first_name=value["username"], email=value["email"])
|
|
|
if created:
|
|
|
user.set_password(value["password"])
|
|
|
user.save()
|
|
|
self.stdout.write(f'Local {key} "{value["username"]}" was created')
|
|
|
|
|
|
group = Group.objects.get(name=key)
|
|
|
group.user_set.add(user)
|
|
|
self.stdout.write(f'Local {key} "{value["username"]}" was added to {key} group')
|
|
|
else:
|
|
|
self.stdout.write(f'Unable to create and join to {key} group this local user: "user already exists"')
|