|
@@ -270,19 +270,30 @@ async def list_queue(
|
|
|
if printer_id == -1:
|
|
if printer_id == -1:
|
|
|
# Special value: filter for unassigned items
|
|
# Special value: filter for unassigned items
|
|
|
query = query.where(PrintQueueItem.printer_id.is_(None))
|
|
query = query.where(PrintQueueItem.printer_id.is_(None))
|
|
|
- elif target_model:
|
|
|
|
|
- # Include both printer-specific items AND model-based (unassigned) items
|
|
|
|
|
- query = query.where(
|
|
|
|
|
- or_(
|
|
|
|
|
- PrintQueueItem.printer_id == printer_id,
|
|
|
|
|
- and_(
|
|
|
|
|
- PrintQueueItem.printer_id.is_(None),
|
|
|
|
|
- func.lower(PrintQueueItem.target_model) == target_model.lower(),
|
|
|
|
|
- ),
|
|
|
|
|
- )
|
|
|
|
|
- )
|
|
|
|
|
else:
|
|
else:
|
|
|
- query = query.where(PrintQueueItem.printer_id == printer_id)
|
|
|
|
|
|
|
+ # Resolve effective model: prefer explicit param, fall back to printer's DB model.
|
|
|
|
|
+ # This ensures model-based "Any X" items are returned even when the frontend
|
|
|
|
|
+ # doesn't send target_model (e.g. printer.model is NULL on the client side).
|
|
|
|
|
+ effective_model = target_model
|
|
|
|
|
+ if not effective_model:
|
|
|
|
|
+ printer_row = (
|
|
|
|
|
+ await db.execute(select(Printer.model).where(Printer.id == printer_id))
|
|
|
|
|
+ ).scalar_one_or_none()
|
|
|
|
|
+ effective_model = printer_row
|
|
|
|
|
+
|
|
|
|
|
+ if effective_model:
|
|
|
|
|
+ # Include both printer-specific items AND model-based (unassigned) items
|
|
|
|
|
+ query = query.where(
|
|
|
|
|
+ or_(
|
|
|
|
|
+ PrintQueueItem.printer_id == printer_id,
|
|
|
|
|
+ and_(
|
|
|
|
|
+ PrintQueueItem.printer_id.is_(None),
|
|
|
|
|
+ func.lower(PrintQueueItem.target_model) == effective_model.lower(),
|
|
|
|
|
+ ),
|
|
|
|
|
+ )
|
|
|
|
|
+ )
|
|
|
|
|
+ else:
|
|
|
|
|
+ query = query.where(PrintQueueItem.printer_id == printer_id)
|
|
|
elif target_model:
|
|
elif target_model:
|
|
|
query = query.where(func.lower(PrintQueueItem.target_model) == target_model.lower())
|
|
query = query.where(func.lower(PrintQueueItem.target_model) == target_model.lower())
|
|
|
if status:
|
|
if status:
|