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