39 lines
1.2 KiB
Python
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})
|