05/11 Update: add contract selection when start an inspection
This commit is contained in:
@@ -10,6 +10,7 @@ from app import db
|
||||
from app.models.inspection import (Inspection, InspectionTemplate,
|
||||
ChecklistItem, InspectionResult)
|
||||
from app.models.facility import Facility, Area
|
||||
from app.models.project import Project
|
||||
from app.models.issue import Issue
|
||||
from app.models.user import User
|
||||
from app.utils.forms import StartInspectionForm, IssueForm
|
||||
@@ -229,18 +230,39 @@ def index():
|
||||
def start():
|
||||
form = StartInspectionForm()
|
||||
|
||||
templates = InspectionTemplate.query.order_by(InspectionTemplate.name).all()
|
||||
facilities = Facility.query.filter_by(active=True).order_by(Facility.name).all()
|
||||
templates = InspectionTemplate.query.order_by(InspectionTemplate.name).all()
|
||||
projects = Project.query.filter_by(active=True).order_by(Project.name).all()
|
||||
|
||||
form.template_id.choices = [(t.id, t.name) for t in templates]
|
||||
form.facility_id.choices = [(f.id, f.name) for f in facilities]
|
||||
form.project_id.choices = [(p.id, p.name) for p in projects]
|
||||
|
||||
# Seed facility choices: use submitted project_id, session value, or first project
|
||||
from flask import session as _session
|
||||
if form.is_submitted():
|
||||
selected_project_id = form.project_id.data
|
||||
elif _session.get('reinspect_facility_id'):
|
||||
# Derive project from the reinspect facility
|
||||
_rf = db.session.get(Facility, _session['reinspect_facility_id'])
|
||||
selected_project_id = _rf.project_id if _rf and _rf.project_id else (projects[0].id if projects else None)
|
||||
else:
|
||||
selected_project_id = projects[0].id if projects else None
|
||||
|
||||
if selected_project_id:
|
||||
facilities = Facility.query.filter_by(active=True, project_id=selected_project_id).order_by(Facility.name).all()
|
||||
else:
|
||||
facilities = []
|
||||
|
||||
form.facility_id.choices = [(f.id, f.name) for f in facilities]
|
||||
if not form.facility_id.choices:
|
||||
form.facility_id.choices = [('', '— no facilities —')]
|
||||
|
||||
if not form.is_submitted():
|
||||
if _session.get('reinspect_template_id'):
|
||||
form.template_id.data = _session['reinspect_template_id']
|
||||
if _session.get('reinspect_facility_id'):
|
||||
form.facility_id.data = _session['reinspect_facility_id']
|
||||
if selected_project_id:
|
||||
form.project_id.data = selected_project_id
|
||||
|
||||
if form.validate_on_submit():
|
||||
template = db.session.get(InspectionTemplate, form.template_id.data)
|
||||
@@ -272,7 +294,7 @@ def start():
|
||||
flash('Inspection started. Fill in the form below and submit when complete.', 'info')
|
||||
return redirect(url_for('inspections.execute', inspection_id=inspection.id))
|
||||
|
||||
return render_template('inspections/start.html', form=form, facilities=facilities)
|
||||
return render_template('inspections/start.html', form=form, projects=projects)
|
||||
|
||||
|
||||
# ── AJAX: areas for a given facility ─────────────────────────────────────────
|
||||
@@ -284,6 +306,18 @@ def areas_for_facility(facility_id):
|
||||
return jsonify([{'id': a.id, 'name': a.name} for a in areas])
|
||||
|
||||
|
||||
# ── AJAX: facilities for a given project/contract ────────────────────────────
|
||||
|
||||
@bp.route('/facilities_for_project/<int:project_id>')
|
||||
@login_required
|
||||
def facilities_for_project(project_id):
|
||||
facilities = (Facility.query
|
||||
.filter_by(active=True, project_id=project_id)
|
||||
.order_by(Facility.name)
|
||||
.all())
|
||||
return jsonify([{'id': f.id, 'name': f.name} for f in facilities])
|
||||
|
||||
|
||||
# ── Execute ───────────────────────────────────────────────────────────────────
|
||||
|
||||
@bp.route('/<int:inspection_id>/execute', methods=['GET', 'POST'])
|
||||
|
||||
Reference in New Issue
Block a user