diff --git a/app/routes/issues.py b/app/routes/issues.py index c07fd9c..0790e5a 100644 --- a/app/routes/issues.py +++ b/app/routes/issues.py @@ -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) diff --git a/app/templates/issues/list.html b/app/templates/issues/list.html index fc6d4de..de97f07 100644 --- a/app/templates/issues/list.html +++ b/app/templates/issues/list.html @@ -73,6 +73,15 @@ +