printer.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from datetime import datetime
  2. from pydantic import BaseModel, Field
  3. class PrinterBase(BaseModel):
  4. name: str = Field(..., min_length=1, max_length=100)
  5. serial_number: str = Field(..., min_length=1, max_length=50)
  6. ip_address: str = Field(..., pattern=r"^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$")
  7. access_code: str = Field(..., min_length=1, max_length=20)
  8. model: str | None = None
  9. auto_archive: bool = True
  10. class PrinterCreate(PrinterBase):
  11. pass
  12. class PrinterUpdate(BaseModel):
  13. name: str | None = None
  14. ip_address: str | None = None
  15. access_code: str | None = None
  16. model: str | None = None
  17. is_active: bool | None = None
  18. auto_archive: bool | None = None
  19. class PrinterResponse(PrinterBase):
  20. id: int
  21. is_active: bool
  22. created_at: datetime
  23. updated_at: datetime
  24. class Config:
  25. from_attributes = True
  26. class PrinterStatus(BaseModel):
  27. id: int
  28. name: str
  29. connected: bool
  30. state: str | None = None
  31. current_print: str | None = None
  32. subtask_name: str | None = None
  33. gcode_file: str | None = None
  34. progress: float | None = None
  35. remaining_time: int | None = None
  36. layer_num: int | None = None
  37. total_layers: int | None = None
  38. temperatures: dict | None = None
  39. cover_url: str | None = None