create_users.py
59 lines
| 3.1 KiB
| text/x-python
|
PythonLexer
r445 | 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"') |