diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/managers.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/managers.py index 017ab14e71..03ac295482 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/managers.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/managers.py @@ -1,8 +1,13 @@ +from typing import TYPE_CHECKING + from django.contrib.auth.hashers import make_password from django.contrib.auth.models import UserManager as DjangoUserManager +if TYPE_CHECKING: + from {{ cookiecutter.project_slug }}.users.models import User # noqa: F401 + -class UserManager(DjangoUserManager): +class UserManager(DjangoUserManager["User"]): """Custom manager for the User model.""" def _create_user(self, email: str, password: str | None, **extra_fields): @@ -17,12 +22,12 @@ def _create_user(self, email: str, password: str | None, **extra_fields): user.save(using=self._db) return user - def create_user(self, email: str, password: str | None = None, **extra_fields): + def create_user(self, email: str, password: str | None = None, **extra_fields): # type: ignore[override] extra_fields.setdefault("is_staff", False) extra_fields.setdefault("is_superuser", False) return self._create_user(email, password, **extra_fields) - def create_superuser(self, email: str, password: str | None = None, **extra_fields): + def create_superuser(self, email: str, password: str | None = None, **extra_fields): # type: ignore[override] extra_fields.setdefault("is_staff", True) extra_fields.setdefault("is_superuser", True) diff --git a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/models.py b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/models.py index 1e48075107..ccb6b78ae6 100644 --- a/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/models.py +++ b/{{cookiecutter.project_slug}}/{{cookiecutter.project_slug}}/users/models.py @@ -1,3 +1,7 @@ +{%- if cookiecutter.username_type == "email" %} +from typing import ClassVar +{%- endif %} + from django.contrib.auth.models import AbstractUser from django.db.models import CharField{% if cookiecutter.username_type == "email" %}, EmailField{% endif %} from django.urls import reverse @@ -26,7 +30,7 @@ class User(AbstractUser): USERNAME_FIELD = "email" REQUIRED_FIELDS = [] - objects = UserManager() + objects: ClassVar[UserManager] = UserManager() {%- endif %} def get_absolute_url(self) -> str: