Fixed bug, where deleted printer was not removed from maintenance

This commit is contained in:
maziggy
2026-01-07 08:01:24 +01:00
parent 4f2a45c190
commit 508116e5b7
4 changed files with 21 additions and 3 deletions
+16
View File
@@ -117,7 +117,10 @@ async def delete_printer(
delete_archives: If True (default), delete all print archives for this printer.
If False, keep archives but remove their printer association.
"""
from sqlalchemy import delete as sql_delete
from backend.app.models.archive import PrintArchive
from backend.app.models.maintenance import MaintenanceHistory, PrinterMaintenance
result = await db.execute(select(Printer).where(Printer.id == printer_id))
printer = result.scalar_one_or_none()
@@ -132,6 +135,19 @@ async def delete_printer(
await db.execute(update(PrintArchive).where(PrintArchive.printer_id == printer_id).values(printer_id=None))
# Delete maintenance history and items for this printer
# (SQLite doesn't enforce FK cascades, so do it explicitly)
maintenance_ids = (
(await db.execute(select(PrinterMaintenance.id).where(PrinterMaintenance.printer_id == printer_id)))
.scalars()
.all()
)
if maintenance_ids:
await db.execute(
sql_delete(MaintenanceHistory).where(MaintenanceHistory.printer_maintenance_id.in_(maintenance_ids))
)
await db.execute(sql_delete(PrinterMaintenance).where(PrinterMaintenance.printer_id == printer_id))
await db.delete(printer)
await db.commit()