from django.db import models from django.contrib.auth.models import AbstractUser, BaseUserManager class UsernameUserManager(BaseUserManager): use_in_migrations = True def _create_user(self, username, email, password, **extra_fields): if not username: raise ValueError("Un username doit être défini") if not email: raise ValueError("Un email doit être défini") email = self.normalize_email(email) user = self.model(username=username, email=email, **extra_fields) user.set_password(password) user.save(using=self.db) return user def create_user(self, username, email, password=None, **extra_fields): extra_fields.setdefault("is_staff", False) extra_fields.setdefault("is_superuser", False) return self._create_user(username, email, password, **extra_fields) def create_superuser(self, username, email, password, **extra_fields): extra_fields.setdefault("is_staff", True) extra_fields.setdefault("is_superuser", True) if extra_fields.get("is_staff") is not True: raise ValueError("Superuser doit être staff à True") if extra_fields.get("is_superuser") is not True: raise ValueError("SuperUser doit être is_superuser à True") return self._create_user(username, email, password, **extra_fields) class User(AbstractUser): email = models.EmailField(unique=True) max_upload_size = models.PositiveBigIntegerField(default=100*1024*1024) # 100Mo objects = UsernameUserManager()