# -*- coding: utf-8 -*-

from django.contrib.auth.models import User
from django.core.management.base import BaseCommand
from django.db.utils import IntegrityError

from apps.volontulo.models import UserProfile


class Command(BaseCommand):
    """Create Volontulo admin."""

    help = "Create Volontulo admin."

    def add_arguments(self, parser):
        parser.add_argument('username', type=str)
        parser.add_argument('password', type=str)
        parser.add_argument(
            '--django-admin',
            action='store_true',
            dest='django_admin',
        )

    def handle(self, *args, **options):
        """Create Volontulo admin."""
        try:
            user = User.objects.create_user(
                username=options['username'],
                email=options['username'],
                password=options['password'],
                is_superuser=options['django_admin'],
                is_staff=options['django_admin'],
                is_active=True,
            )
        except IntegrityError:
            self.stdout.write(self.style.ERROR('User already exists'))
        else:
            user.save()
            UserProfile(
                user=user,
                is_administrator=True,
            ).save()
            self.stdout.write(self.style.SUCCESS('User successfully created'))