Source code for common.models.user
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import UserManager
from django.db import models
class UserQuerySet(models.QuerySet):
def active_tms(self) -> models.QuerySet | list["User"]:
"""Return a QuerySet of active users that may take the tariff manager
role."""
return (
self.filter(
models.Q(groups__name__in=["Tariff Managers", "Tariff Lead Profile"])
| models.Q(is_superuser=True),
)
.filter(is_active=True)
.distinct()
.order_by("first_name", "last_name")
)
class TamatoUserManager(UserManager.from_queryset(UserQuerySet)):
use_in_migrations = True
[docs]class User(AbstractUser):
"""Custom user model."""
objects = TamatoUserManager()
current_workbasket = models.ForeignKey(
"workbaskets.WorkBasket",
on_delete=models.SET_NULL,
null=True,
blank=True,
)
sso_uuid = models.UUIDField(
unique=True,
null=True,
blank=True,
help_text="This field is populated by the Staff SSO authentication backend override.",
)
# Temporary property - needs removing when addressing permissions and groups
@property
def is_hmrc_user(self) -> bool:
return self.groups.filter(
name="HMRC Tariff Review",
).exists()
class Meta:
db_table = "auth_user"
[docs] def remove_current_workbasket(self):
"""Remove the user's assigned current workbasket."""
self.current_workbasket = None
self.save()
[docs] def get_displayname(self):
"""Best effort at getting a useful representation of a User's name for
general display purposes."""
return self.get_full_name() or self.email or str(self)