Source code for timelink.app.schemas.user

# Pydantic schema
from typing import Annotated, List, Optional
from datetime import datetime
from pydantic import BaseModel, ConfigDict, SkipValidation

from timelink.api.database import TimelinkDatabase
from timelink.kleio.kleio_server import KleioServer


[docs] class UserPropertySchema(BaseModel): name: str value: str model_config = ConfigDict(from_attributes=True)
[docs] class UserProjectSchema(BaseModel): user_id: Optional[int] = None project_id: Optional[int] = None project_name: Optional[str] = None project_description: Optional[str] = None access_level: Optional[str] = None # ORM mode model_config = ConfigDict(from_attributes=True)
[docs] class UserSchema(BaseModel): """User schema. Fields: - name: str - email: str - nickname: Optional[str] - disabled: Optional[bool] - properties: Optional[List[UserPropertySchema]]""" name: str email: str nickname: Optional[str] disabled: Optional[bool] properties: Optional[List[UserPropertySchema]] projects: Optional[List["UserProjectSchema"]] # noqa Flake8: F821 current_project_name: Optional[str] = None current_project_db: Annotated[TimelinkDatabase, SkipValidation] = None current_project_kleio_server: Annotated[KleioServer, SkipValidation] = None created: Optional[datetime] = None updated: Optional[datetime] = None def is_admin(self, admin_property: str = "permission:timelink:admin"): for prop in self.properties: if prop.name == admin_property and prop.value in ["true", "yes"]: return True return False # ORM mode model_config = ConfigDict(from_attributes=True, arbitrary_types_allowed=True)