order_processing.py 929 B

123456789101112131415161718192021222324252627
  1. import db
  2. import slicer_utils
  3. import config
  4. import os
  5. from typing import List
  6. def process_order_slicing(order_id: int):
  7. """
  8. Background task to compute accurate print time and filament usage for all files in an order.
  9. """
  10. files = db.execute_query("SELECT id, file_path FROM order_files WHERE order_id = %s", (order_id,))
  11. if not files:
  12. return
  13. for f in files:
  14. file_path = f['file_path']
  15. if not os.path.exists(file_path):
  16. continue
  17. file_ext = os.path.splitext(file_path)[1].lower()
  18. if file_ext == '.stl':
  19. result = slicer_utils.slice_model(file_path)
  20. if result and result.get('success'):
  21. db.execute_commit(
  22. "UPDATE order_files SET print_time = %s, filament_g = %s WHERE id = %s",
  23. (result.get('print_time_str'), result.get('filament_g'), f['id'])
  24. )