django-rest-api/accounts/models.py

43 lines
1.2 KiB
Python

from authtools.models import AbstractEmailUser
from django.db import models
# Create your models here.
class User(AbstractEmailUser):
"""
Custom User model using email as the identifier.
Includes optional name fields used by tests and serializers.
"""
first_name = models.CharField('first name', max_length=150, blank=True)
last_name = models.CharField('last name', max_length=150, blank=True)
full_name = models.CharField('full name', max_length=255, blank=True)
preferred_name = models.CharField('preferred name', max_length=255, blank=True)
def get_full_name(self):
"""
Return the user's full name.
"""
return self.full_name.strip() if self.full_name else ''
def get_short_name(self):
"""
Return the user's preferred name or first part of full name.
"""
if self.preferred_name:
return self.preferred_name.strip()
elif self.full_name:
return self.full_name.split()[0] if self.full_name.split() else ''
return ''
def __str__(self):
"""
String representation of the user.
"""
return self.email
class Meta:
verbose_name = 'User'
verbose_name_plural = 'Users'