March 17 2026: form editor - remove show/hide per-item break down in re-inspect result page 3
This commit is contained in:
@@ -312,6 +312,42 @@ def execute(inspection_id):
|
|||||||
except (json.JSONDecodeError, TypeError):
|
except (json.JSONDecodeError, TypeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# ── Pre-fill from parent inspection for re-inspections ────────────────
|
||||||
|
# When a re-inspection is first opened (no saved responses yet) and has
|
||||||
|
# a completed parent, carry forward all input values EXCEPT scoring
|
||||||
|
# fields (rating, pass_fail) so the inspector doesn't re-enter static
|
||||||
|
# data but must re-evaluate every scoreable item fresh.
|
||||||
|
if not saved_responses and inspection.parent_inspection_id:
|
||||||
|
parent = Inspection.query.get(inspection.parent_inspection_id)
|
||||||
|
if parent and parent.notes:
|
||||||
|
try:
|
||||||
|
parent_parsed = json.loads(parent.notes)
|
||||||
|
if isinstance(parent_parsed, dict) and '_form_data' in parent_parsed:
|
||||||
|
parent_data = parent_parsed['_form_data']
|
||||||
|
# Build a set of field IDs whose type should NOT be carried over
|
||||||
|
# - rating / pass_fail: inspector must re-evaluate fresh
|
||||||
|
# - image / signature: parent photos belong to the original inspection
|
||||||
|
exclude_types = {'rating', 'pass_fail', 'image', 'signature'}
|
||||||
|
exclude_ids = set()
|
||||||
|
for f in form_fields:
|
||||||
|
if f.get('type') in exclude_types:
|
||||||
|
exclude_ids.add(str(f.get('id', '')))
|
||||||
|
saved_responses = {
|
||||||
|
k: v for k, v in parent_data.items()
|
||||||
|
if str(k) not in exclude_ids
|
||||||
|
}
|
||||||
|
# Persist as draft so the pre-filled data survives page reloads
|
||||||
|
_save_responses(inspection, saved_responses)
|
||||||
|
db.session.commit()
|
||||||
|
current_app.logger.info(
|
||||||
|
'RE-INSPECTION PREFILL | inspection_id=%s | parent_id=%s | '
|
||||||
|
'fields_copied=%s | fields_excluded=%s',
|
||||||
|
inspection.id, parent.id,
|
||||||
|
len(saved_responses), len(exclude_ids),
|
||||||
|
)
|
||||||
|
except (json.JSONDecodeError, TypeError):
|
||||||
|
pass
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
action = request.form.get('action', 'submit')
|
action = request.form.get('action', 'submit')
|
||||||
responses = _collect_form_responses(form_fields, saved_responses)
|
responses = _collect_form_responses(form_fields, saved_responses)
|
||||||
|
|||||||
Reference in New Issue
Block a user