Coverage for users\models\employe.py: 93%
14 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
« prev ^ index » next coverage.py v7.10.7, created at 2025-10-13 15:18 +0200
1"""
2Modèle de profil employé.
4Ce module définit le profil employé qui étend les informations de base
5de l'utilisateur avec des données spécifiques aux employés.
6"""
8from django.db import models
9from .base_user import User
12class EmployeProfile(models.Model):
13 """
14 Profil employé lié à un utilisateur.
16 Étend les informations de base d'un utilisateur avec des données
17 spécifiques aux employés : nom, prénom, matricule et identifiant
18 téléphonique professionnel.
20 :ivar user: Relation one-to-one avec l'utilisateur de base
21 :vartype user: User
22 :ivar nom: Nom de famille de l'employé
23 :vartype nom: str
24 :ivar prenom: Prénom de l'employé
25 :vartype prenom: str
26 :ivar matricule: Numéro de matricule unique de l'employé
27 :vartype matricule: str
28 :ivar identifiant_telephone: Identifiant téléphonique professionnel
29 :vartype identifiant_telephone: str
30 """
32 user = models.OneToOneField(
33 User,
34 on_delete=models.CASCADE,
35 related_name='employe_profile',
36 help_text="Utilisateur associé à ce profil employé"
37 )
38 nom = models.CharField(max_length=100, help_text="Nom de famille de l'employé")
39 prenom = models.CharField(max_length=100, help_text="Prénom de l'employé")
40 matricule = models.CharField(
41 max_length=50,
42 unique=True,
43 help_text="Numéro de matricule unique de l'employé"
44 )
45 identifiant_telephone = models.CharField(
46 max_length=255,
47 help_text="Identifiant téléphonique professionnel"
48 )
50 def __str__(self) -> str:
51 """
52 Représentation textuelle du profil employé.
54 :return: Nom complet de l'employé avec matricule
55 :rtype: str
56 """
57 return f"{self.nom} {self.prenom} ({self.matricule})"
59 class Meta:
60 """
61 Métadonnées du modèle EmployeProfile.
63 :cvar verbose_name: Nom lisible au singulier
64 :vartype verbose_name: str
65 :cvar verbose_name_plural: Nom lisible au pluriel
66 :vartype verbose_name_plural: str
67 :cvar ordering: Ordre par défaut (nom, prénom)
68 :vartype ordering: list
69 """
70 verbose_name = "Profil Employé"
71 verbose_name_plural = "Profils Employés"
72 ordering = ['nom', 'prenom']