04/27 Changed facilities list and details views

This commit is contained in:
2026-04-27 14:04:59 -04:00
parent b9df76fa46
commit bbfff75d17
3 changed files with 122 additions and 47 deletions
+22 -1
View File
@@ -23,7 +23,28 @@ def list_facilities():
).order_by(Facility.name).all()
else:
facilities = Facility.query.order_by(Facility.name).all()
return render_template('facilities/list.html', facilities=facilities)
# Group facilities by Contract (Project) for the collapsible list view.
# Facilities with no contract are collected under key '__none__' and
# rendered last as "No Contract Assigned".
from collections import OrderedDict
grouped = OrderedDict()
ungrouped = []
for f in facilities:
if f.project:
key = f.project.name
grouped.setdefault(key, {'project': f.project, 'facilities': []})
grouped[key]['facilities'].append(f)
else:
ungrouped.append(f)
grouped = OrderedDict(sorted(grouped.items()))
if ungrouped:
grouped['__none__'] = {'project': None, 'facilities': ungrouped}
logger.info('FACILITIES | list | user=%s | total=%s | groups=%s',
current_user.username, len(facilities), len(grouped))
return render_template('facilities/list.html', facilities=facilities, grouped=grouped)
@bp.route('/new', methods=['GET', 'POST'])
@login_required