from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import User

from django.conf import settings


class Command(BaseCommand):
    help = 'Creates a super user'

    def handle(self, *args, **options):
        if not (settings.DEBUG or settings.STAGING):
            raise CommandError('You cannot run this command in production')

        self.create_user_object('super', True, True)
        self.create_user_object('staff', True)
        self.create_user_object('basic')

    @staticmethod
    def create_user_object(name, staff=False, superuser=False):
        user, created = User.objects.get_or_create(
            username=name, defaults={'email': '{}@{}.com'.format(name, name),
                                     'first_name': name.title(), 'last_name': 'User', 'is_superuser': superuser,
                                     'is_staff': staff})

        if created:
            user.set_password(name)
            user.save()
