Files
bambuddy/backend/app/schemas/local_preset.py
T
maziggy edf244c469 Add local profiles — import OrcaSlicer presets without Bambu Cloud (#310)
Users who use OrcaSlicer without Bambu Cloud can now import slicer
presets directly into Bambuddy. Supports .orca_filament, .bbscfg,
.bbsflmt, .zip, and .json exports with automatic inheritance resolution
via OrcaSlicer's GitHub base profiles (cached with 7-day TTL).
2026-02-09 17:00:02 +01:00

68 lines
1.6 KiB
Python

"""Pydantic schemas for local preset API."""
from datetime import datetime
from pydantic import BaseModel
class LocalPresetResponse(BaseModel):
"""Local preset summary (without full setting blob)."""
id: int
name: str
preset_type: str
source: str
filament_type: str | None = None
filament_vendor: str | None = None
nozzle_temp_min: int | None = None
nozzle_temp_max: int | None = None
pressure_advance: str | None = None
default_filament_colour: str | None = None
filament_cost: str | None = None
filament_density: str | None = None
compatible_printers: str | None = None
inherits: str | None = None
version: str | None = None
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class LocalPresetDetail(LocalPresetResponse):
"""Full preset detail including the resolved setting JSON."""
setting: dict
class LocalPresetCreate(BaseModel):
"""Schema for manually creating a local preset."""
name: str
preset_type: str # filament, printer, process
setting: dict
class LocalPresetUpdate(BaseModel):
"""Schema for updating a local preset."""
name: str | None = None
setting: dict | None = None
class LocalPresetsResponse(BaseModel):
"""Grouped local presets by type."""
filament: list[LocalPresetResponse] = []
printer: list[LocalPresetResponse] = []
process: list[LocalPresetResponse] = []
class ImportResponse(BaseModel):
"""Result of an import operation."""
success: bool
imported: int
skipped: int
errors: list[str] = []