aboutsummaryrefslogtreecommitdiffstats
path: root/alphabetlearning/users/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'alphabetlearning/users/models.py')
-rw-r--r--alphabetlearning/users/models.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/alphabetlearning/users/models.py b/alphabetlearning/users/models.py
new file mode 100644
index 0000000..f536bc7
--- /dev/null
+++ b/alphabetlearning/users/models.py
@@ -0,0 +1,38 @@
+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 pyblackbird-cc.
+ 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})