From e18f2880a4cfa895d254c02e8a47af4b3868d0ac Mon Sep 17 00:00:00 2001 From: "matthias.lotz" Date: Thu, 18 Dec 2025 20:56:14 +0100 Subject: [PATCH] Make post-migration.py more robust when setting default status - Check if status 'In Betrieb' exists before setting it - Add warning if status not found instead of SQL error - Status records are created automatically via XML data file --- .../migrations/18.0.1.0.4/post-migration.py | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/open_workshop_base/migrations/18.0.1.0.4/post-migration.py b/open_workshop_base/migrations/18.0.1.0.4/post-migration.py index 6e4e601..9eb84b5 100644 --- a/open_workshop_base/migrations/18.0.1.0.4/post-migration.py +++ b/open_workshop_base/migrations/18.0.1.0.4/post-migration.py @@ -123,7 +123,31 @@ def migrate(cr, version): synced_categories = cr.rowcount _logger.info(f"✅ Synchronized {synced_categories} category values") - # 4. Validierung + # 4. Setze Default-Status "In Betrieb" für migrierte Equipment ohne Status + # (Status-Records werden automatisch über XML-Datei erstellt) + _logger.info("Setting default status for equipment without status...") + + # Prüfe ob Status "In Betrieb" existiert + cr.execute("SELECT id FROM maintenance_equipment_status WHERE name = 'In Betrieb' LIMIT 1") + status_result = cr.fetchone() + + if status_result: + status_id = status_result[0] + cr.execute(""" + UPDATE maintenance_equipment me + SET status_id = %s + WHERE me.status_id IS NULL + AND EXISTS ( + SELECT 1 FROM ows_machine om + WHERE om.equipment_id = me.id + ) + """, (status_id,)) + status_set = cr.rowcount + _logger.info(f"✅ Set default status for {status_set} equipment records") + else: + _logger.warning("⚠️ Status 'In Betrieb' not found - skipping status assignment") + + # 5. Validierung cr.execute("SELECT COUNT(*) FROM ows_machine WHERE equipment_id IS NULL") remaining = cr.fetchone()[0]