Files
kadence/backend/app/api/schemas.py
T
timka123 77b26757bf refactor: enhance TimerPage layout and functionality; update theme and tokens for improved design consistency
- Refactored TimerPage component to improve layout and user experience.
- Updated theme configuration to utilize design tokens for better maintainability.
- Introduced new tokens for colors and typography to align with design principles.
- Simplified state management and improved timer functionality.
- Enhanced accessibility and responsiveness of UI elements.
2026-10-18 23:57:36 +03:00

76 lines
1.9 KiB
Python

"""Request bodies. Responses are plain dicts built by the services."""
from __future__ import annotations
from datetime import date
from typing import Any, Literal
from pydantic import BaseModel, Field
class StartTimerRequest(BaseModel):
kind: Literal["work", "short_break", "long_break"] | None = None
minutes: int | None = Field(default=None, ge=1, le=240)
task_id: int | None = None
note: str | None = None
class AbandonRequest(BaseModel):
reason: str | None = None
class ExtendRequest(BaseModel):
minutes: int = Field(default=5, ge=1, le=120)
class AttachTaskRequest(BaseModel):
task_id: int | None = None
class CompleteTimerRequest(BaseModel):
auto_next: bool = True
class TaskCreateRequest(BaseModel):
title: str = Field(min_length=1, max_length=500)
description: str | None = None
due_date: date | None = None
priority: str | None = None
project: str | None = None
estimated_pomodoros: int | None = Field(default=None, ge=1, le=50)
class TaskUpdateRequest(BaseModel):
title: str | None = None
description: str | None = None
due_date: date | None = None
priority: str | None = None
project: str | None = None
estimated_pomodoros: int | None = None
pinned: bool | None = None
class BlockEventRequest(BaseModel):
kind: Literal["domain", "app"] = "domain"
target: str = Field(min_length=1, max_length=255)
action: Literal["blocked", "killed", "warned"] = "blocked"
details: str | None = None
class SendReportRequest(BaseModel):
report_date: date | None = None
force: bool = True
class TestNotificationRequest(BaseModel):
text: str | None = None
class SettingsPatch(BaseModel):
"""A partial settings document; anything omitted keeps its stored value."""
model_config = {"extra": "allow"}
def as_dict(self) -> dict[str, Any]:
return self.model_dump(exclude_unset=True)