Coverage for users\managers.py: 91%
22 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"""
2Gestionnaire personnalisé pour le modèle User.
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"""
8from django.contrib.auth.models import BaseUserManager
10class UserManager(BaseUserManager):
11 """
12 Gestionnaire personnalisé pour le modèle User.
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 """
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.
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
27 Returns:
28 User: L'utilisateur créé
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
41 def create_admin(self, email, password=None, **extra_fields):
42 """
43 Crée un utilisateur avec le rôle admin.
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
50 Returns:
51 User: L'administrateur créé
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)
63 def create_superuser(self, email, password=None, **extra_fields):
64 """
65 Crée un superutilisateur avec tous les privilèges.
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
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)