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): def curative_count(self):
"""Nombre d'interventions curatives.""" """Nombre d'interventions curatives."""
return len([i for i in self.interventions if i.type == 'curatif']) 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 @property
def tree_depth(self): def tree_depth(self):

View file

@ -2,6 +2,7 @@
from flask import Blueprint, render_template, redirect, url_for, request, flash, jsonify from flask import Blueprint, render_template, redirect, url_for, request, flash, jsonify
from flask_login import login_required, current_user from flask_login import login_required, current_user
from datetime import datetime, timezone from datetime import datetime, timezone
from types import SimpleNamespace
from app_new.extensions import db from app_new.extensions import db
from ..core.models.equipment import Equipment, EquipmentCategory, EquipmentDocument, EquipmentRoomHistory, EquipmentRestriction, EquipmentQuantityMovement from ..core.models.equipment import Equipment, EquipmentCategory, EquipmentDocument, EquipmentRoomHistory, EquipmentRestriction, EquipmentQuantityMovement
from ..core.models.college import Room, Building, RoomType, Zone 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) .join(Zone, Room.zone_id == Zone.id, isouter=True)
.order_by(Zone.name, Room.name, descendants.c.name) .order_by(Zone.name, Room.name, descendants.c.name)
).all() ).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 = {} direct_child_quantities = {}
for row in rows: for row in rows:
direct_child_quantities[row.parent_id] = direct_child_quantities.get(row.parent_id, 0) + (row.quantity or 1) direct_child_quantities[row.parent_id] = direct_child_quantities.get(row.parent_id, 0) + (row.quantity or 1)