05/04 Replace issue Area with Facility

This commit is contained in:
2026-05-04 13:25:21 -04:00
parent 18752cc9ab
commit 2bdd6c1a26
3 changed files with 21 additions and 10 deletions
+18 -7
View File
@@ -409,17 +409,28 @@ def unfollow(issue_id):
@supervisor_required
def create():
form = IssueForm()
areas = Area.query.join(Facility).filter(Facility.active == True).order_by(Facility.name, Area.name).all()
facilities = Facility.query.filter_by(active=True).order_by(Facility.name).all()
staff = User.query.filter(User.role.in_(['admin', 'director', 'inspector'])).order_by(User.username).all()
form.area_id.choices = [(a.id, f"{a.facility.name}{a.name}") for a in areas]
form.assigned_to.choices = [(0, '— Unassigned —')] + [(u.id, u.username) for u in staff]
form.facility_id.choices = [(f.id, f.name) for f in facilities]
form.assigned_to.choices = [(0, '— Unassigned —')] + [(u.id, u.username) for u in staff]
if form.validate_on_submit():
from app.routes.inspections import _save_photo
photo_path = _save_photo(form.photo.data, subfolder='issue_photos')
# Derive area_id from the selected facility — use its first active area.
# area_id is required on the Issue model so we must resolve it here.
area = (Area.query
.filter_by(facility_id=form.facility_id.data)
.order_by(Area.name)
.first())
if area is None:
form.facility_id.errors.append('Selected facility has no areas. Please add an area first.')
return render_template('issues/form.html', form=form, title='Log New Issue')
issue = Issue(
area_id = form.area_id.data,
area_id = area.id,
severity = form.severity.data,
description = form.description.data,
photo_path = photo_path,
@@ -430,11 +441,11 @@ def create():
db.session.add(issue)
db.session.commit()
current_app.logger.info(
'ISSUE CREATED | id=%s | severity=%s | area_id=%s | assigned_to=%s | created_by=%s',
issue.id, issue.severity, issue.area_id, issue.assigned_to, current_user.username
'ISSUE CREATED | id=%s | severity=%s | facility_id=%s | area_id=%s | assigned_to=%s | created_by=%s',
issue.id, issue.severity, form.facility_id.data, issue.area_id, issue.assigned_to, current_user.username
)
log_action(ACTION_CREATE, 'Issue', issue.id,
f'#{issue.id} {issue.severity} in {issue.area.name}',
f'#{issue.id} {issue.severity} in {issue.area.facility.name}',
f'severity={issue.severity}; assigned_to={issue.assigned_to}')
if issue.assigned_to: