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"')