Files
remnawave-bedolaga-telegram…/app/webapi/schemas/tickets.py
c0mrade 9a2aea038a chore: add uv package manager and ruff linter configuration
- Add pyproject.toml with uv and ruff configuration
- Pin Python version to 3.13 via .python-version
- Add Makefile commands: lint, format, fix
- Apply ruff formatting to entire codebase
- Remove unused imports (base64 in yookassa/simple_subscription)
- Update .gitignore for new config files
2026-01-24 17:45:27 +03:00

70 lines
1.6 KiB
Python

from __future__ import annotations
from datetime import datetime
from pydantic import BaseModel, Field
class TicketMessageResponse(BaseModel):
id: int
user_id: int
message_text: str
is_from_admin: bool
has_media: bool
media_type: str | None = None
media_file_id: str | None = None
media_caption: str | None = None
created_at: datetime
class TicketResponse(BaseModel):
id: int
user_id: int
title: str
status: str
priority: str
created_at: datetime
updated_at: datetime
closed_at: datetime | None = None
user_reply_block_permanent: bool
user_reply_block_until: datetime | None = None
messages: list[TicketMessageResponse] = Field(default_factory=list)
class TicketStatusUpdateRequest(BaseModel):
status: str
class TicketPriorityUpdateRequest(BaseModel):
priority: str
class TicketReplyBlockRequest(BaseModel):
permanent: bool = False
until: datetime | None = None
class TicketReplyRequest(BaseModel):
message_text: str | None = Field(default=None, max_length=4000)
media_type: str | None = Field(
default=None,
description='Тип медиа (photo, video, document, voice и т.д.)',
max_length=32,
)
media_file_id: str | None = Field(default=None, max_length=255)
media_caption: str | None = Field(default=None, max_length=4000)
class TicketReplyResponse(BaseModel):
ticket: TicketResponse
message: TicketMessageResponse
class TicketMediaResponse(BaseModel):
id: int
ticket_id: int
media_type: str
media_file_id: str
media_caption: str | None = None
media_url: str | None = None