Updated functionalities

This commit is contained in:
2026-04-25 12:11:05 -04:00
parent 5a1c252607
commit a515df6a02
26 changed files with 417 additions and 107 deletions
+37 -13
View File
@@ -1,4 +1,4 @@
from flask import Blueprint, render_template, redirect, url_for, flash, request, jsonify
from flask import Blueprint, render_template, redirect, url_for, flash, request, jsonify, abort
from flask_login import login_required, current_user
from app import db
from app.models.inspection import InspectionTemplate, ChecklistItem
@@ -48,7 +48,9 @@ def create_template():
@bp.route('/<int:template_id>')
@login_required
def view_template(template_id):
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
form_fields = template.get_form_schema()
return render_template(
'templates/view.html',
@@ -61,7 +63,9 @@ def view_template(template_id):
@login_required
@supervisor_required
def edit_template(template_id):
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
form = InspectionTemplateForm(obj=template)
if form.validate_on_submit():
@@ -87,7 +91,9 @@ def edit_template(template_id):
@login_required
@supervisor_required
def rename_template(template_id):
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
new_name = request.form.get('name', '').strip()
if not new_name:
@@ -118,7 +124,9 @@ def rename_template(template_id):
@login_required
@supervisor_required
def delete_template(template_id):
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
if template.inspections.count() > 0:
flash('Cannot delete template with existing inspections.', 'danger')
@@ -138,7 +146,9 @@ def delete_template(template_id):
@login_required
@supervisor_required
def duplicate_template(template_id):
src = InspectionTemplate.query.get_or_404(template_id)
src = db.session.get(InspectionTemplate, template_id)
if src is None:
abort(404)
# Duplicate the template header
new_tpl = InspectionTemplate(
@@ -183,7 +193,9 @@ def duplicate_template(template_id):
@login_required
@supervisor_required
def form_editor(template_id):
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
form_schema = template.get_form_schema()
return render_template(
'templates/form_editor.html',
@@ -197,7 +209,9 @@ def form_editor(template_id):
@supervisor_required
def save_form_schema(template_id):
"""AJAX endpoint — receives the full form schema as JSON and persists it."""
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
data = request.get_json(silent=True)
if data is None:
@@ -270,7 +284,9 @@ def save_form_schema(template_id):
@login_required
def form_preview(template_id):
"""Renders a read-only preview of the dynamic form."""
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
form_fields = template.get_form_schema()
return render_template(
'templates/form_preview.html',
@@ -287,7 +303,9 @@ def form_preview(template_id):
@login_required
@supervisor_required
def create_checklist_item(template_id):
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
form = ChecklistItemForm()
if form.validate_on_submit():
@@ -324,7 +342,9 @@ def create_checklist_item(template_id):
@login_required
@supervisor_required
def edit_checklist_item(item_id):
item = ChecklistItem.query.get_or_404(item_id)
item = db.session.get(ChecklistItem, item_id)
if item is None:
abort(404)
form = ChecklistItemForm(obj=item)
if form.validate_on_submit():
@@ -353,7 +373,9 @@ def edit_checklist_item(item_id):
@login_required
@supervisor_required
def delete_checklist_item(item_id):
item = ChecklistItem.query.get_or_404(item_id)
item = db.session.get(ChecklistItem, item_id)
if item is None:
abort(404)
template_id = item.template_id
item_desc = item.item_description[:80]
item_id_snap = item.id
@@ -369,7 +391,9 @@ def delete_checklist_item(item_id):
@login_required
@supervisor_required
def reorder_items(template_id):
template = InspectionTemplate.query.get_or_404(template_id)
template = db.session.get(InspectionTemplate, template_id)
if template is None:
abort(404)
item_order = request.json.get('item_order', [])
for index, item_id in enumerate(item_order):