Jul 8 - Implement issue assignment separation
This commit is contained in:
+19
-2
@@ -112,9 +112,12 @@ def export_list_pdf():
|
||||
date_from_filter = request.args.get('date_from', '')
|
||||
date_to_filter = request.args.get('date_to', '')
|
||||
reporter_filter = request.args.get('reporter_id', '')
|
||||
handler_filter = request.args.get('handler_type', '')
|
||||
|
||||
if issue_id_filter.isdigit():
|
||||
q = q.filter(Issue.id == int(issue_id_filter))
|
||||
if handler_filter in ('internal', 'facility', 'vendor'):
|
||||
q = q.filter(Issue.handler_type == handler_filter)
|
||||
if severity_filter:
|
||||
q = q.filter(Issue.severity == severity_filter)
|
||||
if status_filter:
|
||||
@@ -243,9 +246,12 @@ def index():
|
||||
date_from_filter = request.args.get('date_from', '')
|
||||
date_to_filter = request.args.get('date_to', '')
|
||||
reporter_filter = request.args.get('reporter_id', '')
|
||||
handler_filter = request.args.get('handler_type', '')
|
||||
|
||||
if issue_id_filter.isdigit():
|
||||
q = q.filter(Issue.id == int(issue_id_filter))
|
||||
if handler_filter in ('internal', 'facility', 'vendor'):
|
||||
q = q.filter(Issue.handler_type == handler_filter)
|
||||
if severity_filter:
|
||||
q = q.filter(Issue.severity == severity_filter)
|
||||
if status_filter:
|
||||
@@ -352,6 +358,7 @@ def index():
|
||||
date_from_filter=date_from_filter,
|
||||
date_to_filter=date_to_filter,
|
||||
reporter_filter=reporter_filter,
|
||||
handler_filter=handler_filter,
|
||||
facilities=facilities,
|
||||
projects=projects,
|
||||
staff=staff,
|
||||
@@ -432,12 +439,22 @@ def view(issue_id):
|
||||
|
||||
issue.result_notes = form.result_notes.data or None
|
||||
|
||||
# Vendor / contractor assignment — admin, director, project_manager only
|
||||
# Handler assignment (who handles it) + vendor/facility details —
|
||||
# admin, director, project_manager only.
|
||||
if current_user.role in ('admin', 'director', 'project_manager'):
|
||||
handler = form.handler_type.data or 'internal'
|
||||
if handler not in ('internal', 'facility', 'vendor'):
|
||||
handler = 'internal'
|
||||
issue.handler_type = handler
|
||||
|
||||
issue.vendor_name = (form.vendor_name.data or '').strip() or None
|
||||
issue.vendor_contact = (form.vendor_contact.data or '').strip() or None
|
||||
issue.vendor_notes = (form.vendor_notes.data or '').strip() or None
|
||||
|
||||
issue.facility_handler_name = (form.facility_handler_name.data or '').strip() or None
|
||||
issue.facility_handler_contact = (form.facility_handler_contact.data or '').strip() or None
|
||||
issue.facility_handler_notes = (form.facility_handler_notes.data or '').strip() or None
|
||||
|
||||
from app.routes.inspections import _save_photo
|
||||
new_photos = []
|
||||
for file_obj in request.files.getlist('result_photos'):
|
||||
@@ -595,7 +612,7 @@ def view(issue_id):
|
||||
db.session.commit() # Single atomic commit: issue fields + comment + all notification rows
|
||||
log_action(ACTION_UPDATE, 'Issue', issue.id,
|
||||
f'#{issue.id} in {issue.area.name if issue.area else issue.resolved_facility.name if issue.resolved_facility else '—'}',
|
||||
f'status={issue.status}; assigned_to={issue.assigned_to}')
|
||||
f'status={issue.status}; handler={issue.handler_type}; assigned_to={issue.assigned_to}')
|
||||
flash('Issue updated.', 'success')
|
||||
return redirect(url_for('issues.view', issue_id=issue_id))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user