Learning-Management-System/lms/users/models.py
2025-01-10 19:54:55 +02:00

39 lines
1.2 KiB
Python

from typing import ClassVar
from django.contrib.auth.models import AbstractUser
from django.db.models import CharField
from django.db.models import EmailField
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from .managers import UserManager
class User(AbstractUser):
"""
Default custom user model for Learning Management System.
If adding fields that need to be filled at user signup,
check forms.SignupForm and forms.SocialSignupForms accordingly.
"""
# First and last name do not cover name patterns around the globe
name = CharField(_("Name of User"), blank=True, max_length=255)
first_name = None # type: ignore[assignment]
last_name = None # type: ignore[assignment]
email = EmailField(_("email address"), unique=True)
username = None # type: ignore[assignment]
USERNAME_FIELD = "email"
REQUIRED_FIELDS = []
objects: ClassVar[UserManager] = UserManager()
def get_absolute_url(self) -> str:
"""Get URL for user's detail view.
Returns:
str: URL for user detail.
"""
return reverse("users:detail", kwargs={"pk": self.id})