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
This commit is contained in:
Matthias Lotz 2025-12-18 20:56:14 +01:00
parent 43cf5754fd
commit e18f2880a4

View File

@ -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]