Coverage for users\managers.py: 91%

22 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-10-13 15:18 +0200

1""" 

2Gestionnaire personnalisé pour le modèle User. 

3 

4Ce module définit un gestionnaire personnalisé qui remplace le gestionnaire 

5par défaut de Django pour gérer les utilisateurs avec email comme identifiant. 

6""" 

7 

8from django.contrib.auth.models import BaseUserManager 

9 

10class UserManager(BaseUserManager): 

11 """ 

12 Gestionnaire personnalisé pour le modèle User. 

13 

14 Fournit des méthodes pour créer des utilisateurs avec différents rôles 

15 en utilisant l'email comme identifiant unique au lieu du username. 

16 """ 

17 

18 def create_user(self, email, password=None, **extra_fields): 

19 """ 

20 Crée et sauvegarde un utilisateur avec l'email et le mot de passe donnés. 

21 

22 Args: 

23 email (str): L'adresse email de l'utilisateur 

24 password (str, optional): Le mot de passe de l'utilisateur 

25 **extra_fields: Champs supplémentaires pour l'utilisateur 

26 

27 Returns: 

28 User: L'utilisateur créé 

29 

30 Raises: 

31 ValueError: Si l'email n'est pas fourni 

32 """ 

33 if not email: 

34 raise ValueError("L'email est obligatoire") 

35 email = self.normalize_email(email) 

36 user = self.model(email=email, **extra_fields) 

37 user.set_password(password) 

38 user.save() 

39 return user 

40 

41 def create_admin(self, email, password=None, **extra_fields): 

42 """ 

43 Crée un utilisateur avec le rôle admin. 

44 

45 Args: 

46 email (str): L'adresse email de l'administrateur 

47 password (str, optional): Le mot de passe de l'administrateur 

48 **extra_fields: Champs supplémentaires pour l'utilisateur 

49 

50 Returns: 

51 User: L'administrateur créé 

52 

53 Raises: 

54 ValueError: Si l'email n'est pas fourni 

55 """ 

56 if not email: 

57 raise ValueError("L'email est obligatoire") 

58 extra_fields.setdefault('role', 'admin') 

59 extra_fields.setdefault('is_staff', False) 

60 extra_fields.setdefault('is_superuser', False) 

61 return self.create_user(email, password, **extra_fields) 

62 

63 def create_superuser(self, email, password=None, **extra_fields): 

64 """ 

65 Crée un superutilisateur avec tous les privilèges. 

66 

67 Args: 

68 email (str): L'adresse email du superutilisateur 

69 password (str, optional): Le mot de passe du superutilisateur 

70 **extra_fields: Champs supplémentaires pour l'utilisateur 

71 

72 Returns: 

73 User: Le superutilisateur créé 

74 """ 

75 extra_fields.setdefault('role', 'admin') 

76 extra_fields.setdefault('is_staff', True) 

77 extra_fields.setdefault('is_superuser', True) 

78 return self.create_user(email, password, **extra_fields)