from django.conf import settings
from django.contrib.auth.models import Group as AuthGroup
from django.db import models
from pirates import models as pirates_models


class Group:
    def save(self, *args, **kwargs):
        for user in self.user_set.all():
            if user.update_group_based_admin():
                user.save()

        return super().save(*args, **kwargs)

    class Meta:
        proxy = True


class User(pirates_models.AbstractUser):
    sso_username = models.CharField(
        max_length=128,
        blank=True,
        null=True,
        verbose_name="Username z SSO",
    )

    email = models.EmailField(
        blank=True,
        null=True,
        verbose_name="E-mailová adresa",
    )

    def set_unusable_password(self) -> None:
        # Purely for compatibility with Guardian
        pass

    def get_username(self) -> str:
        first_name = self.first_name

        if len(first_name) != 0:
            first_name += " "

        return f"{first_name}{self.last_name}"

    def get_lecture_registered(self, lecture) -> bool:
        from lectures.models import Lecture

        return Lecture.objects.filter(id=lecture.id, rsvp_users=self).exists()

    class Meta:
        app_label = "users"
        verbose_name = "Uživatel"
        verbose_name_plural = "Uživatelé"