36 lines
999 B
Python
Executable File
36 lines
999 B
Python
Executable File
import uuid
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, EmailStr
|
|
|
|
|
|
class MemberBase(BaseModel):
|
|
email: EmailStr
|
|
display_name: str
|
|
|
|
|
|
class MemberRead(MemberBase):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
id: uuid.UUID
|
|
avatar_url: str | None = None
|
|
nc_username: str | None = None
|
|
nc_url: str | None = None
|
|
nc_configured: bool = False # True if nc_url + nc_username + nc_password are all set
|
|
created_at: datetime
|
|
|
|
@classmethod
|
|
def from_model(cls, m: object) -> "MemberRead":
|
|
obj = cls.model_validate(m)
|
|
obj.nc_configured = bool(
|
|
m.nc_url and m.nc_username and m.nc_password
|
|
)
|
|
return obj
|
|
|
|
|
|
class MemberSettingsUpdate(BaseModel):
|
|
display_name: str | None = None
|
|
nc_url: str | None = None
|
|
nc_username: str | None = None
|
|
nc_password: str | None = None # send null to clear, omit to leave unchanged
|
|
avatar_url: str | None = None # URL to user's avatar image
|