| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- from datetime import datetime
- from pydantic import BaseModel, Field
- class SpoolBase(BaseModel):
- material: str = Field(..., min_length=1, max_length=50)
- subtype: str | None = None
- color_name: str | None = None
- rgba: str | None = Field(None, pattern=r"^[0-9A-Fa-f]{8}$")
- brand: str | None = None
- label_weight: int = 1000
- core_weight: int = 250
- core_weight_catalog_id: int | None = None
- weight_used: float = 0
- slicer_filament: str | None = None
- slicer_filament_name: str | None = None
- nozzle_temp_min: int | None = None
- nozzle_temp_max: int | None = None
- note: str | None = None
- tag_uid: str | None = None
- tray_uuid: str | None = None
- data_origin: str | None = None
- tag_type: str | None = None
- cost_per_kg: float | None = Field(default=None, ge=0)
- weight_locked: bool = False
- last_scale_weight: int | None = None
- last_weighed_at: datetime | None = None
- class SpoolCreate(SpoolBase):
- pass
- class SpoolBulkCreate(BaseModel):
- spool: SpoolCreate
- quantity: int = Field(default=1, ge=1, le=100)
- class SpoolUpdate(BaseModel):
- material: str | None = None
- subtype: str | None = None
- color_name: str | None = None
- rgba: str | None = None
- brand: str | None = None
- label_weight: int | None = None
- core_weight: int | None = None
- core_weight_catalog_id: int | None = None
- weight_used: float | None = None
- slicer_filament: str | None = None
- slicer_filament_name: str | None = None
- nozzle_temp_min: int | None = None
- nozzle_temp_max: int | None = None
- note: str | None = None
- tag_uid: str | None = None
- tray_uuid: str | None = None
- data_origin: str | None = None
- tag_type: str | None = None
- cost_per_kg: float | None = Field(default=None, ge=0)
- weight_locked: bool | None = None
- class SpoolKProfileBase(BaseModel):
- printer_id: int
- extruder: int = 0
- nozzle_diameter: str = "0.4"
- nozzle_type: str | None = None
- k_value: float
- name: str | None = None
- cali_idx: int | None = None
- setting_id: str | None = None
- class SpoolKProfileResponse(SpoolKProfileBase):
- id: int
- spool_id: int
- created_at: datetime
- class Config:
- from_attributes = True
- class SpoolResponse(SpoolBase):
- id: int
- added_full: bool | None = None
- last_used: datetime | None = None
- encode_time: datetime | None = None
- tag_uid: str | None = None
- tray_uuid: str | None = None
- data_origin: str | None = None
- tag_type: str | None = None
- archived_at: datetime | None = None
- created_at: datetime
- updated_at: datetime
- k_profiles: list[SpoolKProfileResponse] = []
- class Config:
- from_attributes = True
- class SpoolAssignmentCreate(BaseModel):
- spool_id: int
- printer_id: int
- ams_id: int
- tray_id: int
- class SpoolAssignmentResponse(BaseModel):
- id: int
- spool_id: int
- printer_id: int
- printer_name: str | None = None
- ams_id: int
- tray_id: int
- fingerprint_color: str | None = None
- fingerprint_type: str | None = None
- created_at: datetime
- spool: SpoolResponse | None = None
- configured: bool = False
- class Config:
- from_attributes = True
|