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."""
|
"""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):
|
||||||
"""Profondeur dans l'arbre (0 = racine)."""
|
"""Profondeur dans l'arbre (0 = racine)."""
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue