Jun 24 - Issue details page, add filter by Reporter

This commit is contained in:
2026-06-24 13:28:11 -04:00
parent c69fa3e75c
commit ed546418d2
2 changed files with 29 additions and 2 deletions
+18
View File
@@ -111,6 +111,7 @@ def export_list_pdf():
contract_filter = request.args.get('contract_id', '')
date_from_filter = request.args.get('date_from', '')
date_to_filter = request.args.get('date_to', '')
reporter_filter = request.args.get('reporter_id', '')
if issue_id_filter.isdigit():
q = q.filter(Issue.id == int(issue_id_filter))
@@ -140,6 +141,8 @@ def export_list_pdf():
if facility_filter:
fid = int(facility_filter)
q = q.filter(db.or_(Issue.facility_id == fid, Area.facility_id == fid))
if reporter_filter.isdigit():
q = q.filter(Issue.reported_by == int(reporter_filter))
all_issues = q.all()
if sla_filter:
@@ -168,6 +171,10 @@ def export_list_pdf():
f = db.session.get(Facility, int(facility_filter))
if f:
filter_parts.append(f'Facility: {f.name}')
if reporter_filter.isdigit():
r = db.session.get(User, int(reporter_filter))
if r:
filter_parts.append(f'Reporter: {r.display_name}')
filter_summary = ' | '.join(filter_parts) if filter_parts else 'All issues'
@@ -235,6 +242,7 @@ def index():
contract_filter = request.args.get('contract_id', '')
date_from_filter = request.args.get('date_from', '')
date_to_filter = request.args.get('date_to', '')
reporter_filter = request.args.get('reporter_id', '')
if issue_id_filter.isdigit():
q = q.filter(Issue.id == int(issue_id_filter))
@@ -261,6 +269,8 @@ def index():
Issue.facility_id.in_(_contract_fids),
Area.facility_id.in_(_contract_fids),
)) if _contract_fids else q.filter(False)
if reporter_filter.isdigit():
q = q.filter(Issue.reported_by == int(reporter_filter))
if facility_filter:
fid = int(facility_filter)
q = q.filter(
@@ -325,6 +335,12 @@ def index():
User.role.in_(['admin', 'director', 'inspector']), User.active == True
).order_by(User.username).all()
# Reporters dropdown — users who have actually filed at least one issue
reporter_ids = db.session.execute(
db.select(Issue.reported_by).where(Issue.reported_by.isnot(None)).distinct()
).scalars().all()
reporters = User.query.filter(User.id.in_(reporter_ids)).order_by(User.full_name, User.username).all()
return render_template('issues/list.html',
issues=issues_paged,
issue_id_filter=issue_id_filter,
@@ -335,9 +351,11 @@ def index():
contract_filter=contract_filter,
date_from_filter=date_from_filter,
date_to_filter=date_to_filter,
reporter_filter=reporter_filter,
facilities=facilities,
projects=projects,
staff=staff,
reporters=reporters,
followed_ids=followed_ids)