05/25 Update inspectors contract assignment
This commit is contained in:
+22
-10
@@ -17,7 +17,7 @@ from app.utils.forms import IssueForm, IssueUpdateForm
|
||||
from app.utils.decorators import supervisor_required
|
||||
from app.utils.notifications import notify, notify_customers_for_facility, notify_by_matrix
|
||||
from app.utils.audit import log_action, ACTION_CREATE, ACTION_UPDATE, ACTION_DELETE
|
||||
from app.utils.scope import get_customer_scope
|
||||
from app.utils.scope import get_customer_scope, get_inspector_scope
|
||||
from app.utils.sla import sla_status
|
||||
|
||||
bp = Blueprint('issues', __name__, url_prefix='/issues')
|
||||
@@ -80,8 +80,14 @@ def index():
|
||||
)
|
||||
|
||||
if current_user.role == 'inspector':
|
||||
q = q.filter(db.or_(Issue.assigned_to == current_user.id,
|
||||
Issue.reported_by == current_user.id))
|
||||
fids = get_inspector_scope(current_user)
|
||||
if not fids:
|
||||
q = q.filter(False)
|
||||
else:
|
||||
q = q.filter(db.or_(
|
||||
Issue.facility_id.in_(fids),
|
||||
db.and_(Issue.area_id.isnot(None), Area.facility_id.in_(fids)),
|
||||
))
|
||||
elif current_user.role == 'customer':
|
||||
customer_facility_ids = get_customer_scope(current_user)
|
||||
if not customer_facility_ids:
|
||||
@@ -138,8 +144,13 @@ def index():
|
||||
for f in IssueFollower.query.filter_by(user_id=current_user.id).all()
|
||||
}
|
||||
|
||||
# Facilities for the filter dropdown — scoped for customers, full list otherwise
|
||||
if current_user.role == 'customer':
|
||||
# Facilities for the filter dropdown — scoped for inspectors/customers
|
||||
if current_user.role == 'inspector':
|
||||
fids = get_inspector_scope(current_user) or []
|
||||
facilities = Facility.query.filter(
|
||||
Facility.id.in_(fids), Facility.active == True
|
||||
).order_by(Facility.name).all()
|
||||
elif current_user.role == 'customer':
|
||||
facility_ids = get_customer_scope(current_user) or []
|
||||
facilities = Facility.query.filter(
|
||||
Facility.id.in_(facility_ids), Facility.active == True
|
||||
@@ -172,11 +183,12 @@ def view(issue_id):
|
||||
if issue is None:
|
||||
abort(404)
|
||||
|
||||
if current_user.role == 'inspector' and \
|
||||
issue.assigned_to != current_user.id and \
|
||||
issue.reported_by != current_user.id:
|
||||
flash('Access denied.', 'danger')
|
||||
return redirect(url_for('issues.index'))
|
||||
if current_user.role == 'inspector':
|
||||
fids = get_inspector_scope(current_user)
|
||||
facility = issue.resolved_facility
|
||||
if not fids or not facility or facility.id not in fids:
|
||||
flash('Access denied.', 'danger')
|
||||
return redirect(url_for('issues.index'))
|
||||
if current_user.role == 'customer':
|
||||
cids = get_customer_scope(current_user) or []
|
||||
facility = issue.resolved_facility
|
||||
|
||||
Reference in New Issue
Block a user