diff --git a/VERSION b/VERSION index e8cd195..7489062 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.0-dev.11 +0.1.0-dev.12 diff --git a/app_new/core/models/maintenance.py b/app_new/core/models/maintenance.py index 72ee12c..9412a5e 100644 --- a/app_new/core/models/maintenance.py +++ b/app_new/core/models/maintenance.py @@ -489,22 +489,16 @@ class LotTask(db.Model): # Résolution par niveaux : un équipement est rattaché directement au # lot ou hérite du lot d'un parent. On évite ainsi le N+1 de # ``effective_lot_id`` (qui chargeait chaque parent en Python). - result = [] - frontier = [self.lot_id] + result = Equipment.query.filter( + Equipment.is_deleted.is_(False), Equipment.lot_id == self.lot_id + ).all() + frontier = [item.id for item in result] while frontier: - query = Equipment.query.filter( - Equipment.is_deleted.is_(False), Equipment.lot_id.in_(frontier) - ) - batch = query.all() - result.extend(batch) - parent_ids = [item.id for item in batch] - if not parent_ids: - break # Les enfants sans lot héritent du lot de leur parent. Les enfants # ayant déjà un lot propre sont volontairement exclus de la chaîne. inherited = Equipment.query.filter( Equipment.is_deleted.is_(False), - Equipment.parent_id.in_(parent_ids), + Equipment.parent_id.in_(frontier), Equipment.lot_id.is_(None), ).all() result.extend(inherited)