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

1""" 

2Modèle de profil employé. 

3 

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""" 

7 

8from django.db import models 

9from .base_user import User 

10 

11 

12class EmployeProfile(models.Model): 

13 """ 

14 Profil employé lié à un utilisateur. 

15 

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. 

19 

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 """ 

31 

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 ) 

49 

50 def __str__(self) -> str: 

51 """ 

52 Représentation textuelle du profil employé. 

53 

54 :return: Nom complet de l'employé avec matricule 

55 :rtype: str 

56 """ 

57 return f"{self.nom} {self.prenom} ({self.matricule})" 

58 

59 class Meta: 

60 """ 

61 Métadonnées du modèle EmployeProfile. 

62 

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']