fix(equipment): repair grouped detail and hierarchy
This commit is contained in:
parent
8c54f46ef5
commit
864f65d3e0
2 changed files with 25 additions and 0 deletions
|
|
@ -159,6 +159,11 @@ class Equipment(db.Model):
|
|||
"""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):
|
||||
"""Profondeur dans l'arbre (0 = racine)."""
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue