|
@@ -713,14 +713,15 @@ async def check_plate_empty(
|
|
|
)
|
|
)
|
|
|
from backend.app.services.printer_manager import printer_manager
|
|
from backend.app.services.printer_manager import printer_manager
|
|
|
|
|
|
|
|
|
|
+ # Check printer exists first (before OpenCV check)
|
|
|
|
|
+ printer = await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
raise HTTPException(
|
|
raise HTTPException(
|
|
|
status_code=503,
|
|
status_code=503,
|
|
|
detail="Plate detection not available. Install opencv-python-headless to enable.",
|
|
detail="Plate detection not available. Install opencv-python-headless to enable.",
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- printer = await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
# Check chamber light status
|
|
# Check chamber light status
|
|
|
light_warning = False
|
|
light_warning = False
|
|
|
state = printer_manager.get_status(printer_id)
|
|
state = printer_manager.get_status(printer_id)
|
|
@@ -818,14 +819,15 @@ async def calibrate_plate_detection(
|
|
|
)
|
|
)
|
|
|
from backend.app.services.printer_manager import printer_manager
|
|
from backend.app.services.printer_manager import printer_manager
|
|
|
|
|
|
|
|
|
|
+ # Check printer exists first (before OpenCV check)
|
|
|
|
|
+ printer = await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
raise HTTPException(
|
|
raise HTTPException(
|
|
|
status_code=503,
|
|
status_code=503,
|
|
|
detail="Plate detection not available. Install opencv-python-headless to enable.",
|
|
detail="Plate detection not available. Install opencv-python-headless to enable.",
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- printer = await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
# Check chamber light - warn but don't block
|
|
# Check chamber light - warn but don't block
|
|
|
state = printer_manager.get_status(printer_id)
|
|
state = printer_manager.get_status(printer_id)
|
|
|
light_warning = state and not state.chamber_light
|
|
light_warning = state and not state.chamber_light
|
|
@@ -869,15 +871,15 @@ async def delete_plate_calibration(
|
|
|
is_plate_detection_available,
|
|
is_plate_detection_available,
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|
|
+ # Verify printer exists first (before OpenCV check)
|
|
|
|
|
+ await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
raise HTTPException(
|
|
raise HTTPException(
|
|
|
status_code=503,
|
|
status_code=503,
|
|
|
detail="Plate detection not available. Install opencv-python-headless to enable.",
|
|
detail="Plate detection not available. Install opencv-python-headless to enable.",
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
- # Verify printer exists
|
|
|
|
|
- await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
deleted = delete_calibration(printer_id, plate_type)
|
|
deleted = delete_calibration(printer_id, plate_type)
|
|
|
plate_msg = f" for '{plate_type}'" if plate_type else ""
|
|
plate_msg = f" for '{plate_type}'" if plate_type else ""
|
|
|
|
|
|
|
@@ -909,6 +911,9 @@ async def get_plate_detection_status(
|
|
|
)
|
|
)
|
|
|
from backend.app.services.printer_manager import printer_manager
|
|
from backend.app.services.printer_manager import printer_manager
|
|
|
|
|
|
|
|
|
|
+ # Verify printer exists first (before OpenCV check)
|
|
|
|
|
+ await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
return {
|
|
return {
|
|
|
"available": False,
|
|
"available": False,
|
|
@@ -918,9 +923,6 @@ async def get_plate_detection_status(
|
|
|
"message": "OpenCV not installed",
|
|
"message": "OpenCV not installed",
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- # Verify printer exists
|
|
|
|
|
- await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
# Get chamber light status
|
|
# Get chamber light status
|
|
|
state = printer_manager.get_status(printer_id)
|
|
state = printer_manager.get_status(printer_id)
|
|
|
chamber_light = state.chamber_light if state else False
|
|
chamber_light = state.chamber_light if state else False
|
|
@@ -942,11 +944,12 @@ async def get_plate_references(
|
|
|
"""
|
|
"""
|
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
|
|
|
|
|
|
|
|
+ # Verify printer exists first (before OpenCV check)
|
|
|
|
|
+ await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
raise HTTPException(503, "Plate detection not available")
|
|
raise HTTPException(503, "Plate detection not available")
|
|
|
|
|
|
|
|
- await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
detector = PlateDetector()
|
|
detector = PlateDetector()
|
|
|
references = detector.get_references(printer_id)
|
|
references = detector.get_references(printer_id)
|
|
|
|
|
|
|
@@ -973,11 +976,12 @@ async def get_reference_thumbnail(
|
|
|
|
|
|
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
|
|
|
|
|
|
|
|
+ # Verify printer exists first (before OpenCV check)
|
|
|
|
|
+ await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
raise HTTPException(503, "Plate detection not available")
|
|
raise HTTPException(503, "Plate detection not available")
|
|
|
|
|
|
|
|
- await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
detector = PlateDetector()
|
|
detector = PlateDetector()
|
|
|
thumbnail = detector.get_reference_thumbnail(printer_id, index)
|
|
thumbnail = detector.get_reference_thumbnail(printer_id, index)
|
|
|
|
|
|
|
@@ -997,11 +1001,12 @@ async def update_reference_label(
|
|
|
"""Update the label for a calibration reference."""
|
|
"""Update the label for a calibration reference."""
|
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
|
|
|
|
|
|
|
|
+ # Verify printer exists first (before OpenCV check)
|
|
|
|
|
+ await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
raise HTTPException(503, "Plate detection not available")
|
|
raise HTTPException(503, "Plate detection not available")
|
|
|
|
|
|
|
|
- await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
detector = PlateDetector()
|
|
detector = PlateDetector()
|
|
|
success = detector.update_reference_label(printer_id, index, label)
|
|
success = detector.update_reference_label(printer_id, index, label)
|
|
|
|
|
|
|
@@ -1020,11 +1025,12 @@ async def delete_reference(
|
|
|
"""Delete a specific calibration reference."""
|
|
"""Delete a specific calibration reference."""
|
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
from backend.app.services.plate_detection import PlateDetector, is_plate_detection_available
|
|
|
|
|
|
|
|
|
|
+ # Verify printer exists first (before OpenCV check)
|
|
|
|
|
+ await get_printer_or_404(printer_id, db)
|
|
|
|
|
+
|
|
|
if not is_plate_detection_available():
|
|
if not is_plate_detection_available():
|
|
|
raise HTTPException(503, "Plate detection not available")
|
|
raise HTTPException(503, "Plate detection not available")
|
|
|
|
|
|
|
|
- await get_printer_or_404(printer_id, db)
|
|
|
|
|
-
|
|
|
|
|
detector = PlateDetector()
|
|
detector = PlateDetector()
|
|
|
success = detector.delete_reference(printer_id, index)
|
|
success = detector.delete_reference(printer_id, index)
|
|
|
|
|
|