print_log.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from datetime import datetime
  2. from pydantic import BaseModel
  3. class PrintLogEntrySchema(BaseModel):
  4. id: int
  5. archive_id: int | None = None
  6. print_name: str | None = None
  7. printer_name: str | None = None
  8. printer_id: int | None = None
  9. status: str
  10. started_at: datetime | None = None
  11. completed_at: datetime | None = None
  12. duration_seconds: int | None = None
  13. filament_type: str | None = None
  14. filament_color: str | None = None
  15. filament_used_grams: float | None = None
  16. cost: float | None = None
  17. energy_kwh: float | None = None
  18. energy_cost: float | None = None
  19. failure_reason: str | None = None
  20. thumbnail_path: str | None = None
  21. created_by_id: int | None = None
  22. created_by_username: str | None = None
  23. created_at: datetime
  24. class PrintLogResponse(BaseModel):
  25. items: list[PrintLogEntrySchema]
  26. total: int
  27. class PrintLogEntryUpdate(BaseModel):
  28. """Per-row classification edits (#1687 part 4 — IndividualGhost1905).
  29. Lets the user set ``failure_reason`` (and re-classify ``status``) directly
  30. on a Print Log row, including on orphan entries that have no archive to
  31. edit through. The Failure Analysis widget already groups by
  32. ``PrintLogEntry.failure_reason``, so this just plugs the editor gap.
  33. """
  34. failure_reason: str | None = None
  35. status: str | None = None