Add custom user model
This commit is contained in:
parent
2d3e8b2a56
commit
6702de359b
3 changed files with 41 additions and 0 deletions
|
@ -14,6 +14,7 @@ from .service import (
|
||||||
ServiceOfferingPlan,
|
ServiceOfferingPlan,
|
||||||
ServiceProvider,
|
ServiceProvider,
|
||||||
)
|
)
|
||||||
|
from .user import User
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"BillingEntity",
|
"BillingEntity",
|
||||||
|
@ -28,4 +29,5 @@ __all__ = [
|
||||||
"ServiceOffering",
|
"ServiceOffering",
|
||||||
"ServiceOfferingPlan",
|
"ServiceOfferingPlan",
|
||||||
"ServiceProvider",
|
"ServiceProvider",
|
||||||
|
"User",
|
||||||
]
|
]
|
||||||
|
|
38
src/servala/core/models/user.py
Normal file
38
src/servala/core/models/user.py
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
from django.contrib.auth.models import AbstractBaseUser
|
||||||
|
from django.db import models
|
||||||
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
|
class User(AbstractBaseUser):
|
||||||
|
"""The Django model provides a password and last_login field."""
|
||||||
|
|
||||||
|
email = models.EmailField(unique=True, verbose_name=_("Email address"))
|
||||||
|
first_name = models.CharField(
|
||||||
|
max_length=30, blank=True, verbose_name=_("First name")
|
||||||
|
)
|
||||||
|
last_name = models.CharField(max_length=30, blank=True, verbose_name=_("Last name"))
|
||||||
|
company = models.CharField(max_length=100, blank=True, verbose_name=_("Company"))
|
||||||
|
|
||||||
|
is_staff = models.BooleanField(
|
||||||
|
default=False,
|
||||||
|
verbose_name=_("Is staff"),
|
||||||
|
help_text=_("Staff users can log into this admin site."),
|
||||||
|
)
|
||||||
|
is_superuser = models.BooleanField(
|
||||||
|
default=False,
|
||||||
|
verbose_name=_("Is superuser"),
|
||||||
|
help_text=_(
|
||||||
|
"Superusers have all permissions without explicitly assigning them. Use with caution."
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
EMAIL_FIELD = "email"
|
||||||
|
USERNAME_FIELD = "email"
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
if self.first_name and self.last_name:
|
||||||
|
return f"{self.first_name} {self.last_name}"
|
||||||
|
return self.email
|
||||||
|
|
||||||
|
def normalize_username(self, username):
|
||||||
|
return super().normalize_username(username).strip().lower()
|
|
@ -107,6 +107,7 @@ TEMPLATES = [
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
AUTH_USER_MODEL = "core.User"
|
||||||
AUTH_PASSWORD_VALIDATORS = [
|
AUTH_PASSWORD_VALIDATORS = [
|
||||||
{
|
{
|
||||||
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"
|
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue