diff --git a/app_new/core/models/equipment.py b/app_new/core/models/equipment.py index efd6a80..8d21570 100644 --- a/app_new/core/models/equipment.py +++ b/app_new/core/models/equipment.py @@ -158,6 +158,11 @@ class Equipment(db.Model): def curative_count(self): """Nombre d'interventions curatives.""" return len([i for i in self.interventions if i.type == 'curatif']) + + @property + def preventive_count(self): + """Nombre d'interventions préventives associées à l'équipement.""" + return len([i for i in self.interventions if i.type == 'preventif']) @property def tree_depth(self): diff --git a/app_new/equipments/main.py b/app_new/equipments/main.py index a083cdd..af5124e 100644 --- a/app_new/equipments/main.py +++ b/app_new/equipments/main.py @@ -2,6 +2,7 @@ from flask import Blueprint, render_template, redirect, url_for, request, flash, jsonify from flask_login import login_required, current_user from datetime import datetime, timezone +from types import SimpleNamespace from app_new.extensions import db from ..core.models.equipment import Equipment, EquipmentCategory, EquipmentDocument, EquipmentRoomHistory, EquipmentRestriction, EquipmentQuantityMovement from ..core.models.college import Room, Building, RoomType, Zone @@ -201,6 +202,25 @@ def hierarchy(id): .join(Zone, Room.zone_id == Zone.id, isouter=True) .order_by(Zone.name, Room.name, descendants.c.name) ).all() + # Les équipements quantitatifs sans enfants sont eux-mêmes une famille + # localisée. La requête des descendants ne retournait alors aucune ligne, + # masquant leur salle dans le chargement à la demande. + if not rows and not root.is_deleted: + room = root.effective_room + zone = room.zone if room else None + rows = [SimpleNamespace( + id=root.id, + parent_id=root.parent_id, + name=root.name, + code=root.code, + is_group=root.is_group, + status=root.status, + quantity=root.quantity, + room_id=room.id if room else None, + room_name=room.name if room else None, + zone_id=zone.id if zone else None, + zone_name=zone.name if zone else None, + )] direct_child_quantities = {} for row in rows: direct_child_quantities[row.parent_id] = direct_child_quantities.get(row.parent_id, 0) + (row.quantity or 1)