spool.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from datetime import datetime
  2. from pydantic import BaseModel, Field
  3. class SpoolBase(BaseModel):
  4. material: str = Field(..., min_length=1, max_length=50)
  5. subtype: str | None = None
  6. color_name: str | None = None
  7. rgba: str | None = Field(None, pattern=r"^[0-9A-Fa-f]{8}$")
  8. brand: str | None = None
  9. label_weight: int = 1000
  10. core_weight: int = 250
  11. weight_used: float = 0
  12. slicer_filament: str | None = None
  13. slicer_filament_name: str | None = None
  14. nozzle_temp_min: int | None = None
  15. nozzle_temp_max: int | None = None
  16. note: str | None = None
  17. tag_uid: str | None = None
  18. tray_uuid: str | None = None
  19. data_origin: str | None = None
  20. tag_type: str | None = None
  21. class SpoolCreate(SpoolBase):
  22. pass
  23. class SpoolUpdate(BaseModel):
  24. material: str | None = None
  25. subtype: str | None = None
  26. color_name: str | None = None
  27. rgba: str | None = None
  28. brand: str | None = None
  29. label_weight: int | None = None
  30. core_weight: int | None = None
  31. weight_used: float | None = None
  32. slicer_filament: str | None = None
  33. slicer_filament_name: str | None = None
  34. nozzle_temp_min: int | None = None
  35. nozzle_temp_max: int | None = None
  36. note: str | None = None
  37. tag_uid: str | None = None
  38. tray_uuid: str | None = None
  39. data_origin: str | None = None
  40. tag_type: str | None = None
  41. class SpoolKProfileBase(BaseModel):
  42. printer_id: int
  43. extruder: int = 0
  44. nozzle_diameter: str = "0.4"
  45. nozzle_type: str | None = None
  46. k_value: float
  47. name: str | None = None
  48. cali_idx: int | None = None
  49. setting_id: str | None = None
  50. class SpoolKProfileResponse(SpoolKProfileBase):
  51. id: int
  52. spool_id: int
  53. created_at: datetime
  54. class Config:
  55. from_attributes = True
  56. class SpoolResponse(SpoolBase):
  57. id: int
  58. added_full: bool | None = None
  59. last_used: datetime | None = None
  60. encode_time: datetime | None = None
  61. tag_uid: str | None = None
  62. tray_uuid: str | None = None
  63. data_origin: str | None = None
  64. tag_type: str | None = None
  65. archived_at: datetime | None = None
  66. created_at: datetime
  67. updated_at: datetime
  68. k_profiles: list[SpoolKProfileResponse] = []
  69. class Config:
  70. from_attributes = True
  71. class SpoolAssignmentCreate(BaseModel):
  72. spool_id: int
  73. printer_id: int
  74. ams_id: int
  75. tray_id: int
  76. class SpoolAssignmentResponse(BaseModel):
  77. id: int
  78. spool_id: int
  79. printer_id: int
  80. printer_name: str | None = None
  81. ams_id: int
  82. tray_id: int
  83. fingerprint_color: str | None = None
  84. fingerprint_type: str | None = None
  85. created_at: datetime
  86. spool: SpoolResponse | None = None
  87. configured: bool = False
  88. class Config:
  89. from_attributes = True