diff --git a/app/routes/inspections.py b/app/routes/inspections.py index fb301a3..721ee6c 100644 --- a/app/routes/inspections.py +++ b/app/routes/inspections.py @@ -216,8 +216,15 @@ def index(): status_filter = request.args.get('status', '') facility_filter = request.args.get('facility_id', '') follow_up_filter = request.args.get('follow_up', '') + contract_filter = request.args.get('contract_id', '') + if status_filter: q = q.filter(Inspection.status == status_filter) + if contract_filter.isdigit(): + _contract_fids = [ + f.id for f in Facility.query.filter_by(project_id=int(contract_filter)).all() + ] + q = q.filter(Inspection.facility_id.in_(_contract_fids)) if _contract_fids else q.filter(False) if facility_filter.isdigit(): q = q.filter(Inspection.facility_id == int(facility_filter)) if follow_up_filter == '1': @@ -227,21 +234,32 @@ def index(): ).filter(~Inspection.follow_ups.any()) inspections = q.paginate(page=page, per_page=20, error_out=False) + if current_user.role == 'inspector': fids = get_inspector_scope(current_user) or [] - facilities = Facility.query.filter(Facility.id.in_(fids), Facility.active == True).order_by(Facility.name).all() + _fq = Facility.query.filter(Facility.id.in_(fids), Facility.active == True) elif current_user.role == 'customer': cids = get_customer_scope(current_user) or [] - facilities = Facility.query.filter(Facility.id.in_(cids), Facility.active == True).order_by(Facility.name).all() + _fq = Facility.query.filter(Facility.id.in_(cids), Facility.active == True) else: - facilities = Facility.query.filter_by(active=True).order_by(Facility.name).all() + _fq = Facility.query.filter_by(active=True) + + if contract_filter.isdigit(): + _fq = _fq.filter(Facility.project_id == int(contract_filter)) + + facilities = _fq.order_by(Facility.name).all() + + from app.models.project import Project + projects = Project.query.filter_by(active=True).order_by(Project.name).all() return render_template('inspections/list.html', inspections=inspections, facilities=facilities, + projects=projects, status_filter=status_filter, facility_filter=facility_filter, follow_up_filter=follow_up_filter, + contract_filter=contract_filter, now=now_eastern()) diff --git a/app/templates/inspections/list.html b/app/templates/inspections/list.html index 03e2623..d41802b 100644 --- a/app/templates/inspections/list.html +++ b/app/templates/inspections/list.html @@ -14,7 +14,7 @@
-
+
+
+ + +
- {% for f in facilities %} @@ -47,7 +56,7 @@ - + @@ -56,6 +65,7 @@ {% for ins in inspections.items %} + @@ -115,7 +125,7 @@ {% for p in inspections.iter_pages(left_edge=1, right_edge=1, left_current=2, right_current=2) %} {% if p %}
  • - {{ p }} + {{ p }}
  • {% else %}
  • @@ -163,6 +173,39 @@ {% endblock %} {% block extra_js %} + + {% if current_user.role in ['admin', 'director'] %}
    DateFacilityAreaDateContractFacilityArea TemplateInspectorScore Status
    {{ ins.inspection_date.strftime('%Y-%m-%d %H:%M') }}{{ ins.facility.project.name if ins.facility and ins.facility.project else '—' }} {{ ins.facility.name }} {% if ins.area %}{{ ins.area.name }}{% else %}{% endif %} {{ ins.template.name }}