Add ruff config to exclude alembic E402, SQLAlchemy F821, and pre-existing E501 line-length issues. Auto-fix 69 unused imports and 2 f-strings without placeholders. Manually fix 8 unused variables. Apply ruff format to 127 files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
"""Request/response schemas for Remote WinBox (Browser) sessions."""
|
|
|
|
import uuid
|
|
from datetime import datetime
|
|
from enum import Enum
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class RemoteWinboxState(str, Enum):
|
|
creating = "creating"
|
|
active = "active"
|
|
grace = "grace"
|
|
terminating = "terminating"
|
|
terminated = "terminated"
|
|
failed = "failed"
|
|
|
|
|
|
class RemoteWinboxCreateRequest(BaseModel):
|
|
idle_timeout_seconds: int = Field(default=600, ge=60, le=3600)
|
|
max_lifetime_seconds: int = Field(default=7200, ge=300, le=14400)
|
|
|
|
|
|
class RemoteWinboxSessionResponse(BaseModel):
|
|
session_id: uuid.UUID
|
|
status: RemoteWinboxState = RemoteWinboxState.active
|
|
websocket_path: str
|
|
expires_at: datetime
|
|
max_expires_at: datetime
|
|
idle_timeout_seconds: int
|
|
max_lifetime_seconds: int
|
|
xpra_ws_port: Optional[int] = None
|
|
|
|
|
|
class RemoteWinboxStatusResponse(BaseModel):
|
|
session_id: uuid.UUID
|
|
status: RemoteWinboxState
|
|
created_at: datetime
|
|
expires_at: datetime
|
|
max_expires_at: datetime
|
|
idle_timeout_seconds: int
|
|
max_lifetime_seconds: int
|
|
xpra_ws_port: Optional[int] = None
|
|
|
|
|
|
class RemoteWinboxTerminateResponse(BaseModel):
|
|
session_id: uuid.UUID
|
|
status: RemoteWinboxState
|
|
reason: str
|
|
|
|
|
|
class RemoteWinboxDuplicateDetail(BaseModel):
|
|
detail: str = "Active session exists"
|
|
session: RemoteWinboxStatusResponse
|
|
|
|
|
|
class RemoteWinboxSessionItem(BaseModel):
|
|
"""Used in the combined active sessions list."""
|
|
|
|
session_id: uuid.UUID
|
|
status: RemoteWinboxState
|
|
created_at: datetime
|
|
expires_at: datetime
|