| 123456789101112131415161718192021222324252627 |
- import db
- import slicer_utils
- import config
- import os
- from typing import List
- def process_order_slicing(order_id: int):
- """
- Background task to compute accurate print time and filament usage for all files in an order.
- """
- files = db.execute_query("SELECT id, file_path FROM order_files WHERE order_id = %s", (order_id,))
- if not files:
- return
- for f in files:
- file_path = f['file_path']
- if not os.path.exists(file_path):
- continue
-
- file_ext = os.path.splitext(file_path)[1].lower()
- if file_ext == '.stl':
- result = slicer_utils.slice_model(file_path)
- if result and result.get('success'):
- db.execute_commit(
- "UPDATE order_files SET print_time = %s, filament_g = %s WHERE id = %s",
- (result.get('print_time_str'), result.get('filament_g'), f['id'])
- )
|