Move request edit link logic into its own route
This commit is contained in:
@@ -30,3 +30,7 @@ class Authorization(object):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def can_view_audit_log(cls, user):
|
def can_view_audit_log(cls, user):
|
||||||
return Authorization.has_atat_permission(user, Permissions.VIEW_AUDIT_LOG)
|
return Authorization.has_atat_permission(user, Permissions.VIEW_AUDIT_LOG)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def is_ccpo(cls, user):
|
||||||
|
return user.atat_role.name == "ccpo"
|
||||||
|
@@ -55,25 +55,6 @@ class RequestsIndex(object):
|
|||||||
"extended_view": False,
|
"extended_view": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
def _edit_link_for_request(self, viewing_role, request):
|
|
||||||
if request.creator == g.current_user:
|
|
||||||
if request.is_pending_financial_verification:
|
|
||||||
return url_for("requests.financial_verification", request_id=request.id)
|
|
||||||
elif request.is_pending_financial_verification_changes:
|
|
||||||
return url_for(
|
|
||||||
"requests.financial_verification",
|
|
||||||
request_id=request.id,
|
|
||||||
extended=True,
|
|
||||||
)
|
|
||||||
elif request.is_approved:
|
|
||||||
return url_for("requests.view_request_details", request_id=request.id)
|
|
||||||
else:
|
|
||||||
return url_for(
|
|
||||||
"requests.requests_form_update", screen=1, request_id=request.id
|
|
||||||
)
|
|
||||||
elif viewing_role == "ccpo":
|
|
||||||
return url_for("requests.approval", request_id=request.id)
|
|
||||||
|
|
||||||
def _map_request(self, request, viewing_role):
|
def _map_request(self, request, viewing_role):
|
||||||
time_created = pendulum.instance(request.time_created)
|
time_created = pendulum.instance(request.time_created)
|
||||||
is_new = time_created.add(days=1) > pendulum.now()
|
is_new = time_created.add(days=1) > pendulum.now()
|
||||||
@@ -92,7 +73,7 @@ class RequestsIndex(object):
|
|||||||
"last_edited_timestamp": request.latest_revision.time_updated,
|
"last_edited_timestamp": request.latest_revision.time_updated,
|
||||||
"full_name": request.creator.full_name,
|
"full_name": request.creator.full_name,
|
||||||
"annual_usage": annual_usage,
|
"annual_usage": annual_usage,
|
||||||
"edit_link": self._edit_link_for_request(viewing_role, request),
|
"edit_link": url_for("requests.edit", request_id=request.id),
|
||||||
"action_required": request.action_required_by == viewing_role,
|
"action_required": request.action_required_by == viewing_role,
|
||||||
"dod_component": request.latest_revision.dod_component,
|
"dod_component": request.latest_revision.dod_component,
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,7 @@ from flask import g, redirect, render_template, url_for, request as http_request
|
|||||||
|
|
||||||
from . import requests_bp
|
from . import requests_bp
|
||||||
from atst.domain.requests import Requests
|
from atst.domain.requests import Requests
|
||||||
|
from atst.domain.authz import Authorization
|
||||||
from atst.routes.requests.jedi_request_flow import JEDIRequestFlow
|
from atst.routes.requests.jedi_request_flow import JEDIRequestFlow
|
||||||
from atst.models.request_status_event import RequestStatus
|
from atst.models.request_status_event import RequestStatus
|
||||||
from atst.forms.data import (
|
from atst.forms.data import (
|
||||||
@@ -144,3 +145,34 @@ def view_request_details(request_id=None):
|
|||||||
jedi_request=request,
|
jedi_request=request,
|
||||||
requires_fv_action=requires_fv_action,
|
requires_fv_action=requires_fv_action,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@requests_bp.route("/requests/edit/<string:request_id>")
|
||||||
|
def edit(request_id):
|
||||||
|
user = g.current_user
|
||||||
|
request = Requests.get(user, request_id)
|
||||||
|
is_ccpo = Authorization.is_ccpo(user)
|
||||||
|
|
||||||
|
redirect_url = ""
|
||||||
|
|
||||||
|
if request.creator == user:
|
||||||
|
if request.is_pending_financial_verification:
|
||||||
|
redirect_url = url_for(
|
||||||
|
"requests.financial_verification", request_id=request.id
|
||||||
|
)
|
||||||
|
elif request.is_pending_financial_verification_changes:
|
||||||
|
redirect_url = url_for(
|
||||||
|
"requests.financial_verification", request_id=request.id, extended=True
|
||||||
|
)
|
||||||
|
elif request.is_approved:
|
||||||
|
redirect_url = url_for(
|
||||||
|
"requests.view_request_details", request_id=request.id
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
redirect_url = url_for(
|
||||||
|
"requests.requests_form_update", screen=1, request_id=request.id
|
||||||
|
)
|
||||||
|
elif is_ccpo:
|
||||||
|
redirect_url = url_for("requests.approval", request_id=request.id)
|
||||||
|
|
||||||
|
return redirect(redirect_url)
|
||||||
|
@@ -23,18 +23,3 @@ def test_action_required_ccpo():
|
|||||||
context = RequestsIndex(ccpo).execute()
|
context = RequestsIndex(ccpo).execute()
|
||||||
|
|
||||||
assert context["num_action_required"] == 1
|
assert context["num_action_required"] == 1
|
||||||
|
|
||||||
|
|
||||||
def test_ccpo_sees_approval_screen():
|
|
||||||
ccpo = UserFactory.from_atat_role("ccpo")
|
|
||||||
request = RequestFactory.create()
|
|
||||||
Requests.submit(request)
|
|
||||||
ccpo_context = RequestsIndex(ccpo).execute()
|
|
||||||
assert ccpo_context["requests"][0]["edit_link"] == url_for(
|
|
||||||
"requests.approval", request_id=request.id
|
|
||||||
)
|
|
||||||
|
|
||||||
mo_context = RequestsIndex(request.creator).execute()
|
|
||||||
assert mo_context["requests"][0]["edit_link"] != url_for(
|
|
||||||
"requests.approval", request_id=request.id
|
|
||||||
)
|
|
||||||
|
Reference in New Issue
Block a user