fix(equipment): repair grouped detail and hierarchy

This commit is contained in:
root 2026-08-22 14:16:06 +00:00
parent 8c54f46ef5
commit 864f65d3e0
2 changed files with 25 additions and 0 deletions

View file

@ -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):

View file

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