"""Modèles pour l'authentification et la gestion des profils utilisateurs."""

from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Departement(models.Model):
    """Modèle représentant un département."""

    nom_departement = models.TextField(verbose_name="Nom du département :")

    def __str__(self):
        """Retourne une représentation en chaîne de caractères du dép."""
        return self.nom_departement


class Profile(models.Model):
    """Modèle représentant le profil utilisateur.

    Il étend le modèle User de Django avec des informations supplémentaires.
    En y rajoutant notamment le département de l'utilisateur et s'il en est le
    chef.
    """

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    departement = models.ForeignKey(
        Departement, on_delete=models.SET_NULL, null=True, blank=True
    )
    chef_departement = models.BooleanField(
        verbose_name="Cet utilisateur est-il chef de ce département ?"
    )

    def __str__(self):
        """Retourne une représentation en chaîne de caractères du profil."""
        return (
            f"{self.user.first_name} {self.user.last_name} "
            f"({self.departement.nom_departement})"
        )
