30 lines
868 B
Python
30 lines
868 B
Python
from pydantic import Field, field_validator
|
|
|
|
from . import BasePatchModel
|
|
from .fields import FieldEntry, ProfileField, PronounEntry
|
|
from .user import BaseMemberModel, BaseUserModel
|
|
|
|
|
|
class FullMemberModel(BaseMemberModel):
|
|
user: BaseUserModel
|
|
|
|
|
|
class MemberPatchModel(BasePatchModel):
|
|
name: str | None = Field(
|
|
min_length=1,
|
|
max_length=100,
|
|
default=None,
|
|
pattern=r"^[^@\?!#\/\\\[\]\"\{\}'$%&()+<=>^|~`,\*]{1,100}$",
|
|
)
|
|
bio: str | None = Field(max_length=1024, default=None)
|
|
|
|
names: list[FieldEntry] = Field(default=[])
|
|
pronouns: list[PronounEntry] = Field(default=[])
|
|
fields: list[ProfileField] = Field(default=[])
|
|
|
|
@field_validator("name")
|
|
@classmethod
|
|
def check_name(cls, value):
|
|
if value in [".", "..", "edit"]:
|
|
raise ValueError("Name is not allowed")
|
|
return value
|