Merge pull request #282 from dod-ccpo/request-status-views-#160109433
Request status views #160109433
This commit is contained in:
commit
e05ac758b7
@ -135,22 +135,6 @@ class Requests(object):
|
|||||||
section in existing_request_sections for section in all_request_sections
|
section in existing_request_sections for section in all_request_sections
|
||||||
)
|
)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def is_pending_financial_verification(cls, request):
|
|
||||||
return request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def is_pending_financial_verification_changes(cls, request):
|
|
||||||
return request.status == RequestStatus.CHANGES_REQUESTED_TO_FINVER
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def is_pending_ccpo_acceptance(cls, request):
|
|
||||||
return request.status == RequestStatus.PENDING_CCPO_ACCEPTANCE
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def is_pending_ccpo_approval(cls, request):
|
|
||||||
return request.status == RequestStatus.PENDING_CCPO_APPROVAL
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def status_count(cls, status, creator=None):
|
def status_count(cls, status, creator=None):
|
||||||
return RequestsQuery.status_count(status, creator)
|
return RequestsQuery.status_count(status, creator)
|
||||||
|
@ -31,7 +31,7 @@ def readableInteger(value):
|
|||||||
|
|
||||||
def getOptionLabel(value, options):
|
def getOptionLabel(value, options):
|
||||||
if hasattr(value, "value"):
|
if hasattr(value, "value"):
|
||||||
value = value.value
|
value = value.name
|
||||||
try:
|
try:
|
||||||
return next(tup[1] for tup in options if tup[0] == value)
|
return next(tup[1] for tup in options if tup[0] == value)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
|
@ -170,3 +170,27 @@ class Request(Base):
|
|||||||
@property
|
@property
|
||||||
def internal_comments_text(self):
|
def internal_comments_text(self):
|
||||||
return self.internal_comments.text if self.internal_comments else ""
|
return self.internal_comments.text if self.internal_comments else ""
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_pending_financial_verification(self):
|
||||||
|
return self.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_pending_financial_verification_changes(self):
|
||||||
|
return self.status == RequestStatus.CHANGES_REQUESTED_TO_FINVER
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_pending_ccpo_acceptance(self):
|
||||||
|
return self.status == RequestStatus.PENDING_CCPO_ACCEPTANCE
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_pending_ccpo_approval(self):
|
||||||
|
return self.status == RequestStatus.PENDING_CCPO_APPROVAL
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_pending_ccpo_action(self):
|
||||||
|
return self.is_pending_ccpo_acceptance or self.is_pending_ccpo_approval
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_approved(self):
|
||||||
|
return self.status == RequestStatus.APPROVED
|
||||||
|
@ -21,10 +21,8 @@ def map_ccpo_authorizing(user):
|
|||||||
|
|
||||||
def render_approval(request, form=None):
|
def render_approval(request, form=None):
|
||||||
data = request.body
|
data = request.body
|
||||||
pending_final_approval = Requests.is_pending_ccpo_approval(request)
|
pending_final_approval = request.is_pending_ccpo_approval
|
||||||
pending_review = (
|
pending_review = request.is_pending_ccpo_acceptance or pending_final_approval
|
||||||
Requests.is_pending_ccpo_acceptance(request) or pending_final_approval
|
|
||||||
)
|
|
||||||
if pending_final_approval and request.task_order:
|
if pending_final_approval and request.task_order:
|
||||||
data["task_order"] = request.task_order.to_dictionary()
|
data["task_order"] = request.task_order.to_dictionary()
|
||||||
|
|
||||||
@ -42,8 +40,7 @@ def render_approval(request, form=None):
|
|||||||
current_status=request.status.value,
|
current_status=request.status.value,
|
||||||
pending_review=pending_review,
|
pending_review=pending_review,
|
||||||
financial_review=pending_final_approval,
|
financial_review=pending_final_approval,
|
||||||
pdf_available=request.task_order and request.task_order.pdf,
|
f=form or CCPOReviewForm(),
|
||||||
f=form,
|
|
||||||
internal_comment_form=internal_comment_form,
|
internal_comment_form=internal_comment_form,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -13,8 +13,15 @@ def task_order_data(task_order):
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
def financial_form(data):
|
def is_extended(request):
|
||||||
if http_request.args.get("extended"):
|
return (
|
||||||
|
http_request.args.get("extended")
|
||||||
|
or request.is_pending_financial_verification_changes
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def financial_form(request, data):
|
||||||
|
if is_extended(request):
|
||||||
return ExtendedFinancialForm(data=data)
|
return ExtendedFinancialForm(data=data)
|
||||||
else:
|
else:
|
||||||
return FinancialForm(data=data)
|
return FinancialForm(data=data)
|
||||||
@ -27,12 +34,12 @@ def financial_verification(request_id=None):
|
|||||||
if request.task_order:
|
if request.task_order:
|
||||||
form_data.update(task_order_data(request.task_order))
|
form_data.update(task_order_data(request.task_order))
|
||||||
|
|
||||||
form = financial_form(form_data)
|
form = financial_form(request, form_data)
|
||||||
return render_template(
|
return render_template(
|
||||||
"requests/financial_verification.html",
|
"requests/financial_verification.html",
|
||||||
f=form,
|
f=form,
|
||||||
request_id=request_id,
|
request_id=request_id,
|
||||||
extended=http_request.args.get("extended"),
|
extended=is_extended(request),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -40,9 +47,9 @@ def financial_verification(request_id=None):
|
|||||||
def update_financial_verification(request_id):
|
def update_financial_verification(request_id):
|
||||||
post_data = http_request.form
|
post_data = http_request.form
|
||||||
existing_request = Requests.get(g.current_user, request_id)
|
existing_request = Requests.get(g.current_user, request_id)
|
||||||
form = financial_form(post_data)
|
form = financial_form(existing_request, post_data)
|
||||||
rerender_args = dict(
|
rerender_args = dict(
|
||||||
request_id=request_id, f=form, extended=http_request.args.get("extended")
|
request_id=request_id, f=form, extended=is_extended(existing_request)
|
||||||
)
|
)
|
||||||
|
|
||||||
if form.validate():
|
if form.validate():
|
||||||
|
@ -44,10 +44,8 @@ class RequestsIndex(object):
|
|||||||
num_action_required = len(
|
num_action_required = len(
|
||||||
[r for r in mapped_requests if r.get("action_required")]
|
[r for r in mapped_requests if r.get("action_required")]
|
||||||
)
|
)
|
||||||
pending_fv = any(
|
pending_fv = any(r.is_pending_financial_verification for r in requests)
|
||||||
Requests.is_pending_financial_verification(r) for r in requests
|
pending_ccpo = any(r.is_pending_ccpo_acceptance for r in requests)
|
||||||
)
|
|
||||||
pending_ccpo = any(Requests.is_pending_ccpo_acceptance(r) for r in requests)
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"requests": mapped_requests,
|
"requests": mapped_requests,
|
||||||
@ -60,16 +58,14 @@ class RequestsIndex(object):
|
|||||||
def _edit_link_for_request(self, viewing_role, request):
|
def _edit_link_for_request(self, viewing_role, request):
|
||||||
if viewing_role == "ccpo":
|
if viewing_role == "ccpo":
|
||||||
return url_for("requests.approval", request_id=request.id)
|
return url_for("requests.approval", request_id=request.id)
|
||||||
elif Requests.is_pending_financial_verification(request):
|
elif request.is_pending_financial_verification:
|
||||||
return url_for("requests.financial_verification", request_id=request.id)
|
return url_for("requests.financial_verification", request_id=request.id)
|
||||||
elif Requests.is_pending_financial_verification_changes(request):
|
elif request.is_pending_financial_verification_changes:
|
||||||
return url_for(
|
return url_for(
|
||||||
"requests.financial_verification", request_id=request.id, extended=True
|
"requests.financial_verification", request_id=request.id, extended=True
|
||||||
)
|
)
|
||||||
elif Requests.is_pending_ccpo_acceptance(
|
elif request.is_pending_ccpo_action or request.is_approved:
|
||||||
request
|
return url_for("requests.view_request_details", request_id=request.id)
|
||||||
) or Requests.is_pending_ccpo_approval(request):
|
|
||||||
return url_for("requests.view_pending_request", request_id=request.id)
|
|
||||||
else:
|
else:
|
||||||
return url_for(
|
return url_for(
|
||||||
"requests.requests_form_update", screen=1, request_id=request.id
|
"requests.requests_form_update", screen=1, request_id=request.id
|
||||||
|
@ -124,7 +124,26 @@ def requests_submit(request_id=None):
|
|||||||
return redirect("/requests?modal=pendingCCPOApproval")
|
return redirect("/requests?modal=pendingCCPOApproval")
|
||||||
|
|
||||||
|
|
||||||
@requests_bp.route("/requests/pending/<string:request_id>", methods=["GET"])
|
@requests_bp.route("/requests/details/<string:request_id>", methods=["GET"])
|
||||||
def view_pending_request(request_id=None):
|
def view_request_details(request_id=None):
|
||||||
request = Requests.get(g.current_user, request_id)
|
request = Requests.get(g.current_user, request_id)
|
||||||
return render_template("requests/view_pending.html", data=request.body)
|
financial_review = (
|
||||||
|
request.is_pending_ccpo_approval
|
||||||
|
or request.is_approved
|
||||||
|
or request.is_pending_financial_verification_changes
|
||||||
|
)
|
||||||
|
|
||||||
|
data = request.body
|
||||||
|
if financial_review and request.task_order:
|
||||||
|
data["task_order"] = request.task_order.to_dictionary()
|
||||||
|
|
||||||
|
return render_template(
|
||||||
|
"requests/details.html",
|
||||||
|
data=data,
|
||||||
|
request_id=request.id,
|
||||||
|
status=request.status_displayname,
|
||||||
|
pending_review=request.is_pending_ccpo_action,
|
||||||
|
financial_verification=request.is_pending_financial_verification
|
||||||
|
or request.is_pending_financial_verification_changes,
|
||||||
|
financial_review=financial_review,
|
||||||
|
)
|
||||||
|
@ -139,13 +139,11 @@
|
|||||||
Financial Verification
|
Financial Verification
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
{% if pdf_available %}
|
|
||||||
<div>
|
<div>
|
||||||
<a href="{{ url_for("requests.task_order_pdf_download", request_id=request_id)}}" download>
|
<a href="{{ url_for("requests.task_order_pdf_download", request_id=request_id)}}" download>
|
||||||
Download the Task Order PDF
|
Download the Task Order PDF
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
{{ DefinitionReviewField("Task Order Information Source", "task_order", "source", filter="getOptionLabel", filter_args=[task_order_sources]) }}
|
{{ DefinitionReviewField("Task Order Information Source", "task_order", "source", filter="getOptionLabel", filter_args=[task_order_sources]) }}
|
||||||
|
32
templates/requests/details.html
Normal file
32
templates/requests/details.html
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% from "components/alert.html" import Alert %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col">
|
||||||
|
|
||||||
|
{% if financial_verification %}
|
||||||
|
{% include 'requests/review_menu.html' %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if pending_review %}
|
||||||
|
{{ Alert('Your request is being reviewed',
|
||||||
|
message="<p>You cannot edit your submitted request while it is under review. Your request will be reviewed within 3 business days.</p>",
|
||||||
|
level='warning'
|
||||||
|
) }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="panel">
|
||||||
|
<div class="panel__heading">
|
||||||
|
<h1>Request Details</h1><br/>
|
||||||
|
<h2>#{{ request_id }} <span class="label label--info">{{ status }}</span></h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="panel__content">
|
||||||
|
|
||||||
|
{% include "requests/_review.html" %}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
{% include 'requests/review_menu.html' %}
|
||||||
|
|
||||||
<financial inline-template v-bind:initial-data='{{ f.data|mixedContentToJson }}'>
|
<financial inline-template v-bind:initial-data='{{ f.data|mixedContentToJson }}'>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
|
|
||||||
|
21
templates/requests/review_menu.html
Normal file
21
templates/requests/review_menu.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{% set pending_url=url_for('requests.view_request_details', request_id=request_id) %}
|
||||||
|
{% set financial_url=url_for('requests.financial_verification', request_id=request_id) %}
|
||||||
|
<div class="progress-menu progress-menu--four">
|
||||||
|
<ul>
|
||||||
|
<li class="progress-menu__item progress-menu__item--complete">
|
||||||
|
<a href="{{ pending_url }}">
|
||||||
|
Request Information
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% if g.matchesPath(financial_url) %}
|
||||||
|
{% set financial_status="active" %}
|
||||||
|
{% else %}
|
||||||
|
{% set financial_status="incomplete" %}
|
||||||
|
{% endif %}
|
||||||
|
<li class="progress-menu__item progress-menu__item--{{ financial_status }}">
|
||||||
|
<a href="{{ financial_url }}">
|
||||||
|
Financial Verification Information
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
@ -1,24 +0,0 @@
|
|||||||
{% extends "base.html" %}
|
|
||||||
|
|
||||||
{% from "components/alert.html" import Alert %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
<div class="col">
|
|
||||||
{{ Alert('Your request is being reviewed',
|
|
||||||
message="<p>You cannot edit your submitted request while it is under review. Your request will be reviewed within 3 business days.</p>",
|
|
||||||
level='warning'
|
|
||||||
) }}
|
|
||||||
|
|
||||||
<div class="panel">
|
|
||||||
<div class="panel__heading">
|
|
||||||
<h1>View Pending Request</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="panel__content">
|
|
||||||
|
|
||||||
{% include "requests/_review.html" %}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock %}
|
|
Loading…
x
Reference in New Issue
Block a user