| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- from datetime import datetime
- from pydantic import BaseModel, Field, field_validator
- from backend.app.schemas.spool import SpoolFilamentPresetBase, SpoolKProfileBase
- class FilamentProfileDefaultKey(BaseModel):
- """The product a default is for (#1326). ``color_name`` "" = every colour."""
- brand: str = Field(default="", max_length=100)
- material: str = Field(..., min_length=1, max_length=50)
- subtype: str = Field(default="", max_length=50)
- color_name: str = Field(default="", max_length=100)
- @field_validator("brand", "material", "subtype", "color_name", mode="before")
- @classmethod
- def _strip(cls, value):
- return (value or "").strip() if value is None or isinstance(value, str) else value
- class FilamentProfileDefaultWrite(FilamentProfileDefaultKey):
- """Everything a spool form's Printers tab holds, plus the spool's own preset."""
- slicer_filament: str | None = Field(default=None, max_length=128)
- slicer_filament_name: str | None = Field(default=None, max_length=255)
- presets: list[SpoolFilamentPresetBase] = Field(default_factory=list)
- k_profiles: list[SpoolKProfileBase] = Field(default_factory=list)
- class FilamentProfileDefaultResponse(FilamentProfileDefaultWrite):
- id: int
- updated_at: datetime
- class ResolvedProfileDefault(BaseModel):
- """What a new spool of a product gets: the all-colours default with the
- colour's own one laid over it."""
- slicer_filament: str | None = None
- slicer_filament_name: str | None = None
- presets: list[SpoolFilamentPresetBase] = Field(default_factory=list)
- k_profiles: list[SpoolKProfileBase] = Field(default_factory=list)
- default_ids: list[int] = Field(default_factory=list)
- class ProfileDefaultApplyResult(BaseModel):
- """How many spools ``Apply to existing spools`` filled something in on."""
- updated: int
|