Source code for app.schemas.task_schema

from pydantic import BaseModel, Field, field_validator
from typing import List, Optional

from app.utils import is_valid_datestring, PointTypeEnum
from app.models.task_model import Task


[docs] class TaskSchema(BaseModel): id: Optional[int] = Field(None, gt=0) point_type: PointTypeEnum = Field(...) points: int = Field(default=None) description: str = Field(default=None) finished_at: Optional[str] = Field(default=None) username: str = Field(default=None, min_length=3, max_length=32, pattern="^[a-zA-Z0-9]*$") project_name: str = Field(default=None)
[docs] @field_validator("finished_at") @classmethod def validate_datestring(cls, v: str): if v is None: return None if not is_valid_datestring(v): raise ValueError( f'Invalid date format: "{v}". Expected format is "YYYY-MM-DD"' ) return v
[docs] @classmethod def from_task(cls, task: Task): data = { "id": task.id, "point_type": task.point_type, "points": task.points, "description": task.description, "finished_at": task.finished_at, "username": task.participation.member.username, "project_name": task.participation.project.name, } return cls(**data)