display financial verification review info for ccpo
This commit is contained in:
parent
50c8766a7a
commit
e8aa905a99
@ -30,6 +30,8 @@ def readableInteger(value):
|
|||||||
|
|
||||||
|
|
||||||
def getOptionLabel(value, options):
|
def getOptionLabel(value, options):
|
||||||
|
if hasattr(value, "value"):
|
||||||
|
value = value.value
|
||||||
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:
|
||||||
@ -59,6 +61,10 @@ def findFilter(value, filter_name, filter_args=[]):
|
|||||||
raise ValueError("filter name {} not found".format(filter_name))
|
raise ValueError("filter name {} not found".format(filter_name))
|
||||||
|
|
||||||
|
|
||||||
|
def renderList(value):
|
||||||
|
return app.jinja_env.filters["safe"]("<br>".join(value))
|
||||||
|
|
||||||
|
|
||||||
def register_filters(app):
|
def register_filters(app):
|
||||||
app.jinja_env.filters["iconSvg"] = iconSvg
|
app.jinja_env.filters["iconSvg"] = iconSvg
|
||||||
app.jinja_env.filters["dollars"] = dollars
|
app.jinja_env.filters["dollars"] = dollars
|
||||||
@ -67,3 +73,4 @@ def register_filters(app):
|
|||||||
app.jinja_env.filters["getOptionLabel"] = getOptionLabel
|
app.jinja_env.filters["getOptionLabel"] = getOptionLabel
|
||||||
app.jinja_env.filters["mixedContentToJson"] = mixedContentToJson
|
app.jinja_env.filters["mixedContentToJson"] = mixedContentToJson
|
||||||
app.jinja_env.filters["findFilter"] = findFilter
|
app.jinja_env.filters["findFilter"] = findFilter
|
||||||
|
app.jinja_env.filters["renderList"] = renderList
|
||||||
|
@ -140,3 +140,11 @@ WORKSPACE_ROLES = [
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
FUNDING_TYPES = [
|
||||||
|
("", "- Select -"),
|
||||||
|
("RDTE", "Research, Development, Testing & Evaluation (RDT&E)"),
|
||||||
|
("OM", "Operations & Maintenance (O&M)"),
|
||||||
|
("PROC", "Procurement (PROC)"),
|
||||||
|
("OTHER", "Other"),
|
||||||
|
]
|
||||||
|
@ -10,6 +10,7 @@ from atst.domain.task_orders import TaskOrders
|
|||||||
|
|
||||||
from .fields import NewlineListField, SelectField
|
from .fields import NewlineListField, SelectField
|
||||||
from .forms import ValidatedForm
|
from .forms import ValidatedForm
|
||||||
|
from .data import FUNDING_TYPES
|
||||||
|
|
||||||
|
|
||||||
PE_REGEX = re.compile(
|
PE_REGEX = re.compile(
|
||||||
@ -161,13 +162,7 @@ class ExtendedFinancialForm(BaseFinancialForm):
|
|||||||
|
|
||||||
funding_type = SelectField(
|
funding_type = SelectField(
|
||||||
description="What is the source of funding?",
|
description="What is the source of funding?",
|
||||||
choices=[
|
choices=FUNDING_TYPES,
|
||||||
("", "- Select -"),
|
|
||||||
("RDTE", "Research, Development, Testing & Evaluation (RDT&E)"),
|
|
||||||
("OM", "Operations & Maintenance (O&M)"),
|
|
||||||
("PROC", "Procurement (PROC)"),
|
|
||||||
("OTHER", "Other"),
|
|
||||||
],
|
|
||||||
validators=[Required()],
|
validators=[Required()],
|
||||||
render_kw={"required": False},
|
render_kw={"required": False},
|
||||||
)
|
)
|
||||||
|
@ -1,11 +1,22 @@
|
|||||||
from flask import render_template, g
|
from flask import render_template, g
|
||||||
|
|
||||||
from . import requests_bp
|
from . import requests_bp
|
||||||
from atst.forms.data import SERVICE_BRANCHES
|
|
||||||
from atst.domain.requests import Requests
|
from atst.domain.requests import Requests
|
||||||
|
|
||||||
|
|
||||||
|
def task_order_dictionary(task_order):
|
||||||
|
return {
|
||||||
|
c.name: getattr(task_order, c.name)
|
||||||
|
for c in task_order.__table__.columns
|
||||||
|
if c.name not in ["id", "attachment_id"]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@requests_bp.route("/requests/approval/<string:request_id>", methods=["GET"])
|
@requests_bp.route("/requests/approval/<string:request_id>", methods=["GET"])
|
||||||
def approval(request_id):
|
def approval(request_id):
|
||||||
request = Requests.get(g.current_user, request_id)
|
request = Requests.get(g.current_user, request_id)
|
||||||
return render_template("requests/approval.html", data=request.body, service_branches=SERVICE_BRANCHES)
|
data = request.body
|
||||||
|
if request.task_order:
|
||||||
|
data["task_order"] = task_order_dictionary(request.task_order)
|
||||||
|
|
||||||
|
return render_template("requests/approval.html", data=data, financial_review=True)
|
||||||
|
@ -9,6 +9,7 @@ from atst.forms.data import (
|
|||||||
ASSISTANCE_ORG_TYPES,
|
ASSISTANCE_ORG_TYPES,
|
||||||
DATA_TRANSFER_AMOUNTS,
|
DATA_TRANSFER_AMOUNTS,
|
||||||
COMPLETION_DATE_RANGES,
|
COMPLETION_DATE_RANGES,
|
||||||
|
FUNDING_TYPES,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -19,6 +20,7 @@ def option_data():
|
|||||||
"assistance_org_types": ASSISTANCE_ORG_TYPES,
|
"assistance_org_types": ASSISTANCE_ORG_TYPES,
|
||||||
"data_transfer_amounts": DATA_TRANSFER_AMOUNTS,
|
"data_transfer_amounts": DATA_TRANSFER_AMOUNTS,
|
||||||
"completion_date_ranges": COMPLETION_DATE_RANGES,
|
"completion_date_ranges": COMPLETION_DATE_RANGES,
|
||||||
|
"funding_types": FUNDING_TYPES,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
{% macro DefinitionReviewField(title, section, item_name, filter=None, filter_args=[]) -%}
|
{% macro DefinitionReviewField(title, section, item_name, filter=None, filter_args=[]) -%}
|
||||||
<div>
|
<div>
|
||||||
<dt>{{ title }}</dt>
|
<dt>{{ title | safe }}</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{% if data[section] and data[section][item_name] %}
|
{% if data[section] and data[section][item_name] %}
|
||||||
{{ data[section][item_name] | findFilter(filter, filter_args) }}
|
{{ data[section][item_name] | findFilter(filter, filter_args) }}
|
||||||
@ -125,4 +125,57 @@
|
|||||||
{{ DefinitionReviewField("DOD ID", "primary_poc", "dodid_poc") }}
|
{{ DefinitionReviewField("DOD ID", "primary_poc", "dodid_poc") }}
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
|
{% if financial_review %}
|
||||||
|
<hr>
|
||||||
|
<h2>
|
||||||
|
Financial Verification
|
||||||
|
</h2>
|
||||||
|
|
||||||
|
<dl>
|
||||||
|
{{ DefinitionReviewField("Task Order Number", "task_order", "number") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("What is the source of funding?", "task_order", "funding_type", filter="getOptionLabel", filter_args=[funding_types]) }}
|
||||||
|
|
||||||
|
{% if data["task_order"] and data["task_order"]["funding_type"].value == "OTHER" %}
|
||||||
|
{{ DefinitionReviewField("If other, please specify", "task_order", "funding_type_other") }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("<dl><dt>CLIN 0001</dt> - <dd>Unclassified IaaS and PaaS Amount</dd></dl>", "task_order", "clin_0001", filter="dollars") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("<dl><dt>CLIN 0003</dt> - <dd>Unclassified Cloud Support Package</dd></dl>", "task_order", "clin_0003", filter="dollars") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("<dl><dt>CLIN 1001</dt> - <dd>Unclassified IaaS and PaaS Amount <br> OPTION PERIOD 1</dd></dl>", "task_order", "clin_1001", filter="dollars") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("<dl><dt>CLIN 1003</dt> - <dd>Unclassified Cloud Support Package <br> OPTION PERIOD 1</dd></dl>", "task_order", "clin_1003", filter="dollars") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("<dl><dt>CLIN 2001</dt> - <dd>Unclassified IaaS and PaaS Amount <br> OPTION PERIOD 2</dd></dl>", "task_order", "clin_2001", filter="dollars") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("<dl><dt>CLIN 2003</dt> - <dd>Unclassified Cloud Support Package <br> OPTION PERIOD 2</dd></dl>", "task_order", "clin_2003", filter="dollars") }}
|
||||||
|
|
||||||
|
<!-- {{ DefinitionReviewField("Task Order PDF", "task_order", "attachment") }} -->
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Unique Item Identifier (UII)s related to your application(s) if you already have them", "financial_verification", "uii_ids", filter="renderList") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Program Element (PE) Number related to your request", "financial_verification", "pe_id") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Program Treasury Code", "financial_verification", "treasury_code") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Program Budget Activity (BA) Code", "financial_verification", "ba_code") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer First Name", "financial_verification", "fname_co") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer Last Name", "financial_verification", "lname_co") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer Email", "financial_verification", "email_co") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer Office", "financial_verification", "office_co") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer Representative (COR) First Name", "financial_verification", "fname_cor") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer Representative (COR) Last Name", "financial_verification", "lname_cor") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer Representative (COR) Email", "financial_verification", "email_cor") }}
|
||||||
|
|
||||||
|
{{ DefinitionReviewField("Contracting Officer Representative (COR) Office", "financial_verification", "office_cor") }}
|
||||||
|
</dl>
|
||||||
|
{% endif %}
|
||||||
|
@ -30,13 +30,11 @@ def test_ccpo_sees_approval_screen():
|
|||||||
request = RequestFactory.create()
|
request = RequestFactory.create()
|
||||||
Requests.submit(request)
|
Requests.submit(request)
|
||||||
ccpo_context = RequestsIndex(ccpo).execute()
|
ccpo_context = RequestsIndex(ccpo).execute()
|
||||||
assert (
|
assert ccpo_context["requests"][0]["edit_link"] == url_for(
|
||||||
ccpo_context["requests"][0]["edit_link"]
|
"requests.approval", request_id=request.id
|
||||||
== url_for("requests.approval", request_id=request.id)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
mo_context = RequestsIndex(request.creator).execute()
|
mo_context = RequestsIndex(request.creator).execute()
|
||||||
assert (
|
assert mo_context["requests"][0]["edit_link"] != url_for(
|
||||||
mo_context["requests"][0]["edit_link"]
|
"requests.approval", request_id=request.id
|
||||||
!= url_for("requests.approval", request_id=request.id)
|
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user