eight-hourr/backend/services/settings_api.py

57 lines
2.0 KiB
Python

from __future__ import annotations
from typing import Any, Optional
from pydantic import BaseModel, Field
class SettingsUpdatePayload(BaseModel):
gitlab_url: Optional[str] = None
gitlab_token: Optional[str] = None
gitlab_project_path: Optional[str] = None
gitlab_board_id: Optional[int] = None
gitlab_board_labels: Optional[str] = None
gitlab_milestone_title: Optional[str] = None
pts_url: Optional[str] = None
pts_project_name: Optional[str] = None
pts_default_task_name: Optional[str] = None
pts_username: Optional[str] = None
pts_password: Optional[str] = None
auto_fill_enabled: Optional[bool] = None
auto_fill_hour: Optional[int] = Field(default=None, ge=0, le=23)
auto_fill_minute: Optional[int] = Field(default=None, ge=0, le=59)
max_hours_per_day: Optional[float] = Field(default=None, gt=0, le=24)
hour_step: Optional[float] = Field(default=None, gt=0, le=8)
xai_api_key: Optional[str] = None
xai_base_url: Optional[str] = None
grok_model: Optional[str] = None
use_llm: Optional[bool] = None
use_description_variation: Optional[bool] = None
teams_calendar_enabled: Optional[bool] = None
teams_username: Optional[str] = None
teams_password: Optional[str] = None
teams_calendar_timezone: Optional[str] = None
teams_meeting_task_name: Optional[str] = None
teams_headless: Optional[bool] = None
teams_meeting_exclude_keywords: Optional[str] = None
azure_client_id: Optional[str] = None
azure_tenant_id: Optional[str] = None
compbase_list_url: Optional[str] = None
compbase_fill_url: Optional[str] = None
compbase_username: Optional[str] = None
compbase_password: Optional[str] = None
compbase_default_days: Optional[int] = Field(default=None, ge=1, le=62)
compbase_out_time_mode: Optional[str] = None
def to_update_dict(self) -> dict[str, Any]:
return {k: v for k, v in self.model_dump().items() if v is not None}
class DatesFilePayload(BaseModel):
content: str = ""