Use html partials for TO review pages
This commit is contained in:
parent
377149c766
commit
848a4ac276
@ -92,7 +92,8 @@ def submit_ko_review(portfolio_id, task_order_id, form=None):
|
|||||||
form = KOReviewForm(http_request.form)
|
form = KOReviewForm(http_request.form)
|
||||||
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
portfolio = Portfolios.get(g.current_user, portfolio_id)
|
||||||
|
|
||||||
if form.validate() and Authorization.check_is_ko(g.current_user, task_order):
|
if form.validate():
|
||||||
|
Authorization.check_is_ko(g.current_user, task_order)
|
||||||
TaskOrders.update(user=g.current_user, task_order=task_order, **form.data)
|
TaskOrders.update(user=g.current_user, task_order=task_order, **form.data)
|
||||||
return redirect(
|
return redirect(
|
||||||
url_for(
|
url_for(
|
||||||
|
11
templates/components/review_field.html
Normal file
11
templates/components/review_field.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{% macro ReviewField(heading, field, filter=None) %}
|
||||||
|
<div class="col col--grow">
|
||||||
|
<h4 class='task-order-form__heading'>{{ heading }}</h4>
|
||||||
|
{% if field %}
|
||||||
|
<p>{{ field | findFilter(filter) }}</p>
|
||||||
|
{% endif %}
|
||||||
|
{% if caller %}
|
||||||
|
{{ caller() }}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endmacro %}
|
9
templates/fragments/task_order_review/app_info.html
Normal file
9
templates/fragments/task_order_review/app_info.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{% from "components/review_field.html" import ReviewField %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{{ ReviewField(("task_orders.new.review.portfolio" | translate), task_order.portfolio_name) }}
|
||||||
|
{{ ReviewField(("task_orders.new.review.dod" | translate), task_order.defense_component, filter="normalizeOrder") }}
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
{{ ReviewField(("task_orders.new.review.scope" | translate), task_order.scope) }}
|
||||||
|
</div>
|
72
templates/fragments/task_order_review/funding.html
Normal file
72
templates/fragments/task_order_review/funding.html
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
{% from "components/review_field.html" import ReviewField %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{% call ReviewField(("task_orders.new.review.performance_period" | translate), task_order.performance_length, filter="translateDuration") %}
|
||||||
|
{% if task_order.csp_estimate %}
|
||||||
|
<p>
|
||||||
|
<a href="{{ url_for("task_orders.download_csp_estimate", task_order_id=task_order.id) }}" class='icon-link icon-link--left' download>{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a>
|
||||||
|
</p>
|
||||||
|
{% else %}
|
||||||
|
<br/>
|
||||||
|
<a href="{{ url_for("task_orders.download_csp_estimate", task_order_id=task_order.id) }}" class='icon-link icon-link--left icon-link--disabled' aria-disabled="true">{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a>
|
||||||
|
{{ Icon('alert', classes='icon--red') }} <span class="task-order-invite-message not-sent">{{ "task_orders.new.review.not_uploaded"| translate }}</span>
|
||||||
|
{% endif %}
|
||||||
|
{% endcall %}
|
||||||
|
|
||||||
|
<div class="col col--grow">
|
||||||
|
<table class="funding-summary__table">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><h4>{{ "task_orders.new.review.to_value"| translate }}</h4></td>
|
||||||
|
<td class="table-cell--align-right">
|
||||||
|
{% if task_order.budget %}
|
||||||
|
{{ task_order.budget | dollarsWithCents }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><h4 class='task-order-form__heading funding-summary__td'>{{ "task_orders.new.review.clin_1"| translate }}</h4></td>
|
||||||
|
<td class="table-cell--align-right">
|
||||||
|
{% if task_order.clin_01 %}
|
||||||
|
{{ task_order.clin_01 | dollarsWithCents }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><h4 class="task-order-form__heading funding-summary__td{% if not config.CLASSIFIED %} inactive{% endif %}">
|
||||||
|
{{ "task_orders.new.review.clin_2"| translate }}
|
||||||
|
{% if not config.CLASSIFIED %}
|
||||||
|
<div>{{ "task_orders.new.review.classified_inactive"| translate }}</div>
|
||||||
|
{% endif %}
|
||||||
|
</h4></td>
|
||||||
|
<td class="table-cell--align-right">
|
||||||
|
{% if task_order.clin_02 and config.CLASSIFIED %}
|
||||||
|
{{ task_order.clin_02 | dollarsWithCents or RequiredLabel() }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><h4 class='task-order-form__heading funding-summary__td'>{{ "task_orders.new.review.clin_3"| translate }}</h4></td>
|
||||||
|
<td class="table-cell--align-right">
|
||||||
|
{% if task_order.clin_03 %}
|
||||||
|
{{ task_order.clin_03 | dollarsWithCents or RequiredLabel() }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><h4 class="task-order-form__heading funding-summary__td{% if not config.CLASSIFIED %} inactive{% endif %}">
|
||||||
|
{{ "task_orders.new.review.clin_4"| translate }}
|
||||||
|
{% if not config.CLASSIFIED %}
|
||||||
|
<div>{{ "task_orders.new.review.classified_inactive"| translate }}</div>
|
||||||
|
{% endif %}
|
||||||
|
</h4></td>
|
||||||
|
<td class="table-cell--align-right">
|
||||||
|
{% if task_order.clin_04 and config.CLASSIFIED %}
|
||||||
|
{{ task_order.clin_04 | dollarsWithCents or RequiredLabel() }}
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
25
templates/fragments/task_order_review/oversight.html
Normal file
25
templates/fragments/task_order_review/oversight.html
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{% macro ReviewOfficerInfo(heading, first_name, last_name, email, phone_number, dod_id, officer) %}
|
||||||
|
<div class="col col--grow">
|
||||||
|
<h4 class='task-order-form__heading'>{{ heading | translate }}</h4>
|
||||||
|
{{ first_name }} {{ last_name }}<br>
|
||||||
|
{{ email }}<br>
|
||||||
|
{% if phone_number %}
|
||||||
|
{{ phone_number | usPhone }}
|
||||||
|
{% endif %}
|
||||||
|
<br>
|
||||||
|
{{ "task_orders.new.review.dod_id" | translate }} {{ dod_id}}<br>
|
||||||
|
{% if officer %}
|
||||||
|
{{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span>
|
||||||
|
{% else %}
|
||||||
|
{{ Icon('alert', classes='icon--red') }} <span class="task-order-invite-message not-sent">{{ "task_orders.new.review.not_invited"| translate }}</span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endmacro %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{{ ReviewOfficerInfo("task_orders.new.review.ko", task_order.ko_first_name, task_order.ko_last_name, task_order.ko_email, task_order.ko_phone_number, task_order.ko_dod_id, task_order.contracting_officer) }}
|
||||||
|
{{ ReviewOfficerInfo("task_orders.new.review.cor", task_order.cor_first_name, task_order.cor_last_name, task_order.cor_email, task_order.cor_phone_number, task_order.cor_dod_id, task_order.contracting_officer_representative) }}
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
{{ ReviewOfficerInfo("task_orders.new.review.so", task_order.so_first_name, task_order.so_last_name, task_order.so_email, task_order.so_phone_number, task_order.so_dod_id, task_order.security_officer) }}
|
||||||
|
</div>
|
41
templates/fragments/task_order_review/reporting.html
Normal file
41
templates/fragments/task_order_review/reporting.html
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{% from "components/review_field.html" import ReviewField %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
{{ ReviewField(("forms.task_order.app_migration.label" | translate), ("forms.task_order.app_migration.{}".format(task_order.app_migration) | translate), filter="removeHtml") }}
|
||||||
|
{{ ReviewField(("forms.task_order.native_apps.label" | translate), ("forms.task_order.native_apps.{}".format(task_order.native_apps))| translate) }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.complexity"| translate }}</h4>
|
||||||
|
{% if task_order.complexity %}
|
||||||
|
<ul class="checklist">
|
||||||
|
{% for item in task_order.complexity %}
|
||||||
|
<li>
|
||||||
|
{{ Icon('ok', classes='icon--gray icon--medium') }}{{ "forms.task_order.complexity.{}".format(item) | translate }}{% if item == 'other' %}: {{ task_order.complexity_other }}{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<p>{{ RequiredLabel() }}</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col col--grow">
|
||||||
|
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.team"| translate }}</h4>
|
||||||
|
{% if task_order.dev_team %}
|
||||||
|
<ul class="checklist">
|
||||||
|
{% for item in task_order.dev_team %}
|
||||||
|
<li>
|
||||||
|
{% if item == 'other' %}
|
||||||
|
{{ Icon('ok', classes='icon--gray icon--medium') }}Other: {{ task_order.dev_team_other }}
|
||||||
|
{% else %}
|
||||||
|
{{ Icon('ok', classes='icon--gray icon--medium') }}{{ "forms.task_order.dev_team.{}".format(item) | translate }}
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% else %}
|
||||||
|
<p>{{ RequiredLabel() }}</p>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{{ ReviewField(("forms.task_order.team_experience.label" |translate), ("forms.task_order.team_experience.{}".format(task_order.team_experience)) | translate) }}
|
||||||
|
</div>
|
@ -6,7 +6,7 @@
|
|||||||
{% from "components/date_picker.html" import DatePicker %}
|
{% from "components/date_picker.html" import DatePicker %}
|
||||||
{% from "components/text_input.html" import TextInput %}
|
{% from "components/text_input.html" import TextInput %}
|
||||||
{% from "components/alert.html" import Alert %}
|
{% from "components/alert.html" import Alert %}
|
||||||
|
{% from "components/review_field.html" import ReviewField %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
@ -19,44 +19,6 @@
|
|||||||
|
|
||||||
{% block form %}
|
{% block form %}
|
||||||
|
|
||||||
{% macro TOEditLink(screen=1, anchor=None) %}
|
|
||||||
{% if task_order %}
|
|
||||||
{{ EditLink(url_for("task_orders.new", screen=screen, task_order_id=task_order.id, _anchor=anchor)) }}
|
|
||||||
{% else %}
|
|
||||||
{{ EditLink(url_for("task_orders.new", screen=screen, _anchor=anchor)) }}
|
|
||||||
{% endif %}
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% macro ReviewField(heading, field, filter=None) %}
|
|
||||||
<div class="col col--grow">
|
|
||||||
<h4 class='task-order-form__heading'>{{ heading }}</h4>
|
|
||||||
{% if field %}
|
|
||||||
<p>{{ field | findFilter(filter) }}</p>
|
|
||||||
{% endif %}
|
|
||||||
{% if caller %}
|
|
||||||
{{ caller() }}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% macro ReviewOfficerInfo(heading, first_name, last_name, email, phone_number, dod_id, officer) %}
|
|
||||||
<div class="col col--grow">
|
|
||||||
<h4 class='task-order-form__heading'>{{ heading | translate }}</h4>
|
|
||||||
{{ first_name }} {{ last_name }}<br>
|
|
||||||
{{ email }}<br>
|
|
||||||
{% if phone_number %}
|
|
||||||
{{ phone_number | usPhone }}
|
|
||||||
{% endif %}
|
|
||||||
<br>
|
|
||||||
{{ "task_orders.new.review.dod_id" | translate }} {{ dod_id}}<br>
|
|
||||||
{% if officer %}
|
|
||||||
{{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span>
|
|
||||||
{% else %}
|
|
||||||
{{ Icon('alert', classes='icon--red') }} <span class="task-order-invite-message not-sent">{{ "task_orders.new.review.not_invited"| translate }}</span>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% set message = "task_orders.ko_review.submitted_by" | translate({"name": task_order.creator.full_name}) %}
|
{% set message = "task_orders.ko_review.submitted_by" | translate({"name": task_order.creator.full_name}) %}
|
||||||
|
|
||||||
{{ Alert(("task_orders.ko_review.alert_title" | translate), message, level='warning',
|
{{ Alert(("task_orders.ko_review.alert_title" | translate), message, level='warning',
|
||||||
@ -73,147 +35,24 @@
|
|||||||
|
|
||||||
<div class="panel__content">
|
<div class="panel__content">
|
||||||
<div class="h2">{{ "task_orders.new.review.app_info"| translate }}</div>
|
<div class="h2">{{ "task_orders.new.review.app_info"| translate }}</div>
|
||||||
|
{% include "fragments/task_order_review/app_info.html" %}
|
||||||
<div class="row">
|
|
||||||
{{ ReviewField(("task_orders.new.review.portfolio" | translate), task_order.portfolio_name) }}
|
|
||||||
{{ ReviewField(("task_orders.new.review.dod" | translate), task_order.defense_component, filter="normalizeOrder") }}
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
{{ ReviewField(("task_orders.new.review.scope" | translate), task_order.scope) }}
|
|
||||||
</div>
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="h2">{{ "task_orders.new.review.reporting"| translate }}</div>
|
<div class="h2">{{ "task_orders.new.review.reporting"| translate }}</div>
|
||||||
|
{% include "fragments/task_order_review/reporting.html" %}
|
||||||
<div class="row">
|
|
||||||
{{ ReviewField(("forms.task_order.app_migration.label" | translate), ("forms.task_order.app_migration.{}".format(task_order.app_migration) | translate), filter="removeHtml") }}
|
|
||||||
{{ ReviewField(("forms.task_order.native_apps.label" | translate), ("forms.task_order.native_apps.{}".format(task_order.native_apps))| translate) }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.complexity"| translate }}</h4>
|
|
||||||
{% if task_order.complexity %}
|
|
||||||
<ul class="checklist">
|
|
||||||
{% for item in task_order.complexity %}
|
|
||||||
<li>
|
|
||||||
{{ Icon('ok', classes='icon--gray icon--medium') }}{{ "forms.task_order.complexity.{}".format(item) | translate }}{% if item == 'other' %}: {{ task_order.complexity_other }}{% endif %}
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col col--grow">
|
|
||||||
<h4 class='task-order-form__heading'>{{ "task_orders.new.review.team"| translate }}</h4>
|
|
||||||
{% if task_order.dev_team %}
|
|
||||||
<ul class="checklist">
|
|
||||||
{% for item in task_order.dev_team %}
|
|
||||||
<li>
|
|
||||||
{% if item == 'other' %}
|
|
||||||
{{ Icon('ok', classes='icon--gray icon--medium') }}Other: {{ task_order.dev_team_other }}
|
|
||||||
{% else %}
|
|
||||||
{{ Icon('ok', classes='icon--gray icon--medium') }}{{ "forms.task_order.dev_team.{}".format(item) | translate }}
|
|
||||||
{% endif %}
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{ ReviewField(("forms.task_order.team_experience.label" |translate), ("forms.task_order.team_experience.{}".format(task_order.team_experience)) | translate) }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="h2">{{ "task_orders.new.review.funding"| translate }}</div>
|
<div class="h2">{{ "task_orders.new.review.funding"| translate }}</div>
|
||||||
|
{% include "fragments/task_order_review/funding.html" %}
|
||||||
<div class="row">
|
|
||||||
{% call ReviewField(("task_orders.new.review.performance_period" | translate), task_order.performance_length, filter="translateDuration") %}
|
|
||||||
{% if task_order.csp_estimate %}
|
|
||||||
<p>
|
|
||||||
<a href="{{ url_for("task_orders.download_csp_estimate", task_order_id=task_order.id) }}" class='icon-link icon-link--left' download>{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a>
|
|
||||||
</p>
|
|
||||||
{% else %}
|
|
||||||
<br/>
|
|
||||||
<a href="{{ url_for("task_orders.download_csp_estimate", task_order_id=task_order.id) }}" class='icon-link icon-link--left icon-link--disabled' aria-disabled="true">{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a>
|
|
||||||
{{ Icon('alert', classes='icon--red') }} <span class="task-order-invite-message not-sent">{{ "task_orders.new.review.not_uploaded"| translate }}</span>
|
|
||||||
{% endif %}
|
|
||||||
{% endcall %}
|
|
||||||
|
|
||||||
<div class="col col--grow">
|
|
||||||
<table class="funding-summary__table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><h4>{{ "task_orders.new.review.to_value"| translate }}</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.budget %}
|
|
||||||
{{ task_order.budget | dollarsWithCents }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class='task-order-form__heading funding-summary__td'>{{ "task_orders.new.review.clin_1"| translate }}</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_01 %}
|
|
||||||
{{ task_order.clin_01 | dollarsWithCents }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class="task-order-form__heading funding-summary__td{% if not config.CLASSIFIED %} inactive{% endif %}">
|
|
||||||
{{ "task_orders.new.review.clin_2"| translate }}
|
|
||||||
{% if not config.CLASSIFIED %}
|
|
||||||
<div>{{ "task_orders.new.review.classified_inactive"| translate }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_02 and config.CLASSIFIED %}
|
|
||||||
{{ task_order.clin_02 | dollarsWithCents or RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class='task-order-form__heading funding-summary__td'>{{ "task_orders.new.review.clin_3"| translate }}</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_03 %}
|
|
||||||
{{ task_order.clin_03 | dollarsWithCents or RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class="task-order-form__heading funding-summary__td{% if not config.CLASSIFIED %} inactive{% endif %}">
|
|
||||||
{{ "task_orders.new.review.clin_4"| translate }}
|
|
||||||
{% if not config.CLASSIFIED %}
|
|
||||||
<div>{{ "task_orders.new.review.classified_inactive"| translate }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_04 and config.CLASSIFIED %}
|
|
||||||
{{ task_order.clin_04 | dollarsWithCents or RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form__sub-fields">
|
<div class="form__sub-fields">
|
||||||
{{ DatePicker(form.start_date) }}
|
{{ DatePicker(form.start_date) }}
|
||||||
{{ DatePicker(form.end_date) }}
|
{{ DatePicker(form.end_date) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="h2">{{ "task_orders.new.review.oversight"| translate }}</div>
|
<div class="h2">{{ "task_orders.new.review.oversight"| translate }}</div>
|
||||||
|
{% include "fragments/task_order_review/oversight.html" %}
|
||||||
<div class="row">
|
|
||||||
{{ ReviewOfficerInfo("task_orders.new.review.ko", task_order.ko_first_name, task_order.ko_last_name, task_order.ko_email, task_order.ko_phone_number, task_order.ko_dod_id, task_order.contracting_officer) }}
|
|
||||||
{{ ReviewOfficerInfo("task_orders.new.review.cor", task_order.cor_first_name, task_order.cor_last_name, task_order.cor_email, task_order.cor_phone_number, task_order.cor_dod_id, task_order.contracting_officer_representative) }}
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
{{ ReviewOfficerInfo("task_orders.new.review.so", task_order.so_first_name, task_order.so_last_name, task_order.so_email, task_order.so_phone_number, task_order.so_dod_id, task_order.security_officer) }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div class="h2">{{ "task_orders.ko_review.task_order_information"| translate }}</div>
|
<div class="h2">{{ "task_orders.ko_review.task_order_information"| translate }}</div>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
{% from "components/edit_link.html" import EditLink %}
|
{% from "components/edit_link.html" import EditLink %}
|
||||||
{% from "components/required_label.html" import RequiredLabel %}
|
{% from "components/required_label.html" import RequiredLabel %}
|
||||||
{% from "components/icon.html" import Icon %}
|
{% from "components/icon.html" import Icon %}
|
||||||
|
{% from "components/review_field.html" import ReviewField %}
|
||||||
|
|
||||||
{% block heading %}
|
{% block heading %}
|
||||||
{{ "task_orders.new.review.section_title"| translate }}
|
{{ "task_orders.new.review.section_title"| translate }}
|
||||||
@ -18,50 +19,9 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% macro ReviewField(heading, field, filter=None) %}
|
|
||||||
<div class="col col--grow">
|
|
||||||
<h4 class='task-order-form__heading'>{{ heading }}</h4>
|
|
||||||
{% if field %}
|
|
||||||
<p>{{ field | findFilter(filter) }}</p>
|
|
||||||
{% else %}
|
|
||||||
{{ RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
{% if caller %}
|
|
||||||
{{ caller() }}
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
{% macro ReviewOfficerInfo(heading, first_name, last_name, email, phone_number, dod_id, officer) %}
|
|
||||||
<div class="col col--grow">
|
|
||||||
<h4 class='task-order-form__heading'>{{ heading | translate }}</h4>
|
|
||||||
{{ first_name }} {{ last_name }}<br>
|
|
||||||
{{ email }}<br>
|
|
||||||
{% if phone_number %}
|
|
||||||
{{ phone_number | usPhone }}
|
|
||||||
{% else %}
|
|
||||||
{{ RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
<br>
|
|
||||||
{{ "task_orders.new.review.dod_id" | translate }} {{ dod_id}}<br>
|
|
||||||
{% if officer %}
|
|
||||||
{{ Icon('ok', classes='icon--green') }} <span class="task-order-invite-message sent">{{ "task_orders.new.review.invited"| translate }}</<span>
|
|
||||||
{% else %}
|
|
||||||
{{ Icon('alert', classes='icon--red') }} <span class="task-order-invite-message not-sent">{{ "task_orders.new.review.not_invited"| translate }}</span>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
{% endmacro %}
|
|
||||||
|
|
||||||
|
|
||||||
<h3 class="subheading">{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}</h3>
|
<h3 class="subheading">{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}</h3>
|
||||||
|
{% include "fragments/task_order_review/app_info.html" %}
|
||||||
<div class="row">
|
|
||||||
{{ ReviewField(("task_orders.new.review.portfolio" | translate), task_order.portfolio_name) }}
|
|
||||||
{{ ReviewField(("task_orders.new.review.dod" | translate), task_order.defense_component, filter="normalizeOrder") }}
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
{{ ReviewField(("task_orders.new.review.scope" | translate), task_order.scope) }}
|
|
||||||
</div>
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<h3 class="subheading">{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(screen=1, anchor="reporting") }}</h3>
|
<h3 class="subheading">{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(screen=1, anchor="reporting") }}</h3>
|
||||||
@ -133,95 +93,11 @@
|
|||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<h3 class="subheading">{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(screen=2) }}</h3>
|
<h3 class="subheading">{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(screen=2) }}</h3>
|
||||||
|
{% include "fragments/task_order_review/funding.html" %}
|
||||||
<div class="row">
|
|
||||||
{% call ReviewField(("task_orders.new.review.performance_period" | translate), task_order.performance_length, filter="translateDuration") %}
|
|
||||||
{% if task_order.csp_estimate %}
|
|
||||||
<p>
|
|
||||||
<a href="{{ url_for("task_orders.download_csp_estimate", task_order_id=task_order.id) }}" class='icon-link icon-link--left' download>{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a>
|
|
||||||
</p>
|
|
||||||
{% else %}
|
|
||||||
<p>
|
|
||||||
<a href="{{ url_for("task_orders.download_csp_estimate", task_order_id=task_order.id) }}" class='icon-link icon-link--left icon-link--disabled' aria-disabled="true">{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}</a><br>
|
|
||||||
{{ Icon('alert', classes='icon--red') }} <span class="task-order-invite-message not-sent">{{ "task_orders.new.review.not_uploaded"| translate }}</span>
|
|
||||||
</p>
|
|
||||||
{% endif %}
|
|
||||||
{% endcall %}
|
|
||||||
|
|
||||||
<div class="col col--grow">
|
|
||||||
<table class="funding-summary__table">
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><h4>{{ "task_orders.new.review.to_value"| translate }}</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.budget %}
|
|
||||||
{{ task_order.budget | dollars }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class='task-order-form__heading funding-summary__td'>{{ "task_orders.new.review.clin_1"| translate }}</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_01 %}
|
|
||||||
{{ task_order.clin_01 | dollars }}
|
|
||||||
{% else %}
|
|
||||||
{{ RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class="task-order-form__heading funding-summary__td{% if not config.CLASSIFIED %} inactive{% endif %}">
|
|
||||||
{{ "task_orders.new.review.clin_2"| translate }}
|
|
||||||
{% if not config.CLASSIFIED %}
|
|
||||||
<div>{{ "task_orders.new.review.classified_inactive"| translate }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_02 and config.CLASSIFIED %}
|
|
||||||
{{ task_order.clin_02 | dollars or RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class='task-order-form__heading funding-summary__td'>{{ "task_orders.new.review.clin_3"| translate }}</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_03 %}
|
|
||||||
{{ task_order.clin_03 | dollars or RequiredLabel() }}
|
|
||||||
{% else %}
|
|
||||||
{{ RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><h4 class="task-order-form__heading funding-summary__td{% if not config.CLASSIFIED %} inactive{% endif %}">
|
|
||||||
{{ "task_orders.new.review.clin_4"| translate }}
|
|
||||||
{% if not config.CLASSIFIED %}
|
|
||||||
<div>{{ "task_orders.new.review.classified_inactive"| translate }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</h4></td>
|
|
||||||
<td class="table-cell--align-right">
|
|
||||||
{% if task_order.clin_04 and config.CLASSIFIED %}
|
|
||||||
{{ task_order.clin_04 | dollars or RequiredLabel() }}
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<h3 class="subheading">{{ "task_orders.new.review.oversight"| translate }} {{ TOEditLink(screen=3) }}</h3>
|
<h3 class="subheading">{{ "task_orders.new.review.oversight"| translate }} {{ TOEditLink(screen=3) }}</h3>
|
||||||
|
{% include "fragments/task_order_review/oversight.html" %}
|
||||||
<div class="row">
|
|
||||||
{{ ReviewOfficerInfo("task_orders.new.review.ko", task_order.ko_first_name, task_order.ko_last_name, task_order.ko_email, task_order.ko_phone_number, task_order.ko_dod_id, task_order.contracting_officer) }}
|
|
||||||
{{ ReviewOfficerInfo("task_orders.new.review.cor", task_order.cor_first_name, task_order.cor_last_name, task_order.cor_email, task_order.cor_phone_number, task_order.cor_dod_id, task_order.contracting_officer_representative) }}
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
{{ ReviewOfficerInfo("task_orders.new.review.so", task_order.so_first_name, task_order.so_last_name, task_order.so_email, task_order.so_phone_number, task_order.so_dod_id, task_order.security_officer) }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block next %}
|
{% block next %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user