From 225ec9000abbfd095ba249d0ca8951de24f6e052 Mon Sep 17 00:00:00 2001 From: NguyenND Date: Thu, 19 Feb 2026 14:52:25 -0500 Subject: [PATCH] Phase 2: add Facility delete button --- app/routes/facilities.py | 16 +++--- app/templates/facilities/list.html | 89 +++++++++++++++++++++++++++++- app/templates/facilities/view.html | 60 +++++++++++++++++++- 3 files changed, 151 insertions(+), 14 deletions(-) diff --git a/app/routes/facilities.py b/app/routes/facilities.py index 80e67b9..14b2c5a 100644 --- a/app/routes/facilities.py +++ b/app/routes/facilities.py @@ -1,9 +1,10 @@ from flask import Blueprint, render_template, redirect, url_for, flash, request from flask_login import login_required +from flask_wtf.csrf import generate_csrf from app import db from app.models.facility import Facility, Area from app.utils.forms import FacilityForm, AreaForm -from app.utils.decorators import supervisor_required +from app.utils.decorators import supervisor_required, admin_required bp = Blueprint('facilities', __name__, url_prefix='/facilities') @@ -11,7 +12,7 @@ bp = Blueprint('facilities', __name__, url_prefix='/facilities') @login_required def list_facilities(): facilities = Facility.query.order_by(Facility.name).all() - return render_template('facilities/list.html', facilities=facilities) + return render_template('facilities/list.html', facilities=facilities, csrf_token=generate_csrf()) @bp.route('/new', methods=['GET', 'POST']) @login_required @@ -41,7 +42,7 @@ def create_facility(): def view_facility(facility_id): facility = Facility.query.get_or_404(facility_id) areas = facility.areas.order_by(Area.name).all() - return render_template('facilities/view.html', facility=facility, areas=areas) + return render_template('facilities/view.html', facility=facility, areas=areas, csrf_token=generate_csrf()) @bp.route('//edit', methods=['GET', 'POST']) @login_required @@ -65,20 +66,19 @@ def edit_facility(facility_id): @bp.route('//delete', methods=['POST']) @login_required -@supervisor_required +@admin_required def delete_facility(facility_id): facility = Facility.query.get_or_404(facility_id) - # Check if facility has inspections if facility.inspections.count() > 0: - flash('Cannot delete facility with existing inspections.', 'danger') + flash(f'Cannot delete "{facility.name}" — it has existing inspection records.', 'danger') return redirect(url_for('facilities.view_facility', facility_id=facility.id)) facility_name = facility.name db.session.delete(facility) db.session.commit() - flash(f'Facility "{facility_name}" deleted successfully.', 'success') + flash(f'Facility "{facility_name}" has been permanently deleted.', 'success') return redirect(url_for('facilities.list_facilities')) # Area Management Routes @@ -114,7 +114,6 @@ def edit_area(area_id): area = Area.query.get_or_404(area_id) form = AreaForm(obj=area) - # Populate facility choices facilities = Facility.query.filter_by(active=True).order_by(Facility.name).all() form.facility_id.choices = [(f.id, f.name) for f in facilities] @@ -136,7 +135,6 @@ def delete_area(area_id): area = Area.query.get_or_404(area_id) facility_id = area.facility_id - # Check if area has inspections if area.inspections.count() > 0: flash('Cannot delete area with existing inspections.', 'danger') return redirect(url_for('facilities.view_facility', facility_id=facility_id)) diff --git a/app/templates/facilities/list.html b/app/templates/facilities/list.html index 746629c..1bcc30f 100644 --- a/app/templates/facilities/list.html +++ b/app/templates/facilities/list.html @@ -29,23 +29,34 @@ Inactive {% endif %} - + {% if facility.address %}

{{ facility.address }}

{% endif %} - +
{{ facility.areas.count() }} areas
- @@ -57,4 +68,76 @@ {% endfor %} + +{% if current_user.role == 'admin' %} + + +{% endif %} +{% endblock %} + +{% block extra_js %} +{% if current_user.role == 'admin' %} + +{% endif %} {% endblock %} \ No newline at end of file diff --git a/app/templates/facilities/view.html b/app/templates/facilities/view.html index e4458ed..f2d9ea1 100644 --- a/app/templates/facilities/view.html +++ b/app/templates/facilities/view.html @@ -7,7 +7,7 @@

{{ facility.name }}

-
+
{% if current_user.role in ['admin', 'supervisor'] %} Edit @@ -16,6 +16,14 @@ Add Area {% endif %} + {% if current_user.role == 'admin' %} + + {% endif %}
@@ -51,7 +59,7 @@ - +
@@ -103,6 +111,7 @@
+ @@ -121,4 +130,51 @@ {% endif %}
+ +{% if current_user.role == 'admin' %} + + +{% endif %} {% endblock %} \ No newline at end of file