28 lines
785 B
Python
28 lines
785 B
Python
from pydantic import BaseModel, model_validator, EmailStr
|
|
from typing import Self
|
|
|
|
from .enums import Membership, LanguageOption
|
|
from .submodels import Address
|
|
|
|
class PersonModel(BaseModel):
|
|
membership: Membership
|
|
first_name: str
|
|
tussenvoegsels: str | None = None # only in Dutch names
|
|
last_name: str
|
|
full_name: str # first_name + tussenvoegsels + last_name
|
|
email: EmailStr
|
|
language: LanguageOption
|
|
|
|
# TODO: phone number
|
|
address: Address | None = None
|
|
|
|
@model_validator(mode="after")
|
|
def generate_full_name(self) -> Self:
|
|
full_name = self.first_name
|
|
if self.tussenvoegsels:
|
|
full_name += " " + self.tussenvoegsels
|
|
full_name += " " + self.last_name
|
|
self.full_name = full_name
|
|
return self
|
|
|