diff --git a/atst/routes/portfolios/task_orders.py b/atst/routes/portfolios/task_orders.py
index 5ed29cb6..7fe47504 100644
--- a/atst/routes/portfolios/task_orders.py
+++ b/atst/routes/portfolios/task_orders.py
@@ -92,7 +92,8 @@ def submit_ko_review(portfolio_id, task_order_id, form=None):
form = KOReviewForm(http_request.form)
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)
return redirect(
url_for(
diff --git a/templates/components/review_field.html b/templates/components/review_field.html
new file mode 100644
index 00000000..e05e8c70
--- /dev/null
+++ b/templates/components/review_field.html
@@ -0,0 +1,11 @@
+{% macro ReviewField(heading, field, filter=None) %}
+
+ {{ ReviewField(("task_orders.new.review.portfolio" | translate), task_order.portfolio_name) }}
+ {{ ReviewField(("task_orders.new.review.dod" | translate), task_order.defense_component, filter="normalizeOrder") }}
+
+
+ {{ ReviewField(("task_orders.new.review.scope" | translate), task_order.scope) }}
+
diff --git a/templates/fragments/task_order_review/funding.html b/templates/fragments/task_order_review/funding.html
new file mode 100644
index 00000000..8b9e1225
--- /dev/null
+++ b/templates/fragments/task_order_review/funding.html
@@ -0,0 +1,72 @@
+{% from "components/review_field.html" import ReviewField %}
+
+
+ {{ 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) }}
+
+
+ {{ 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) }}
+
diff --git a/templates/fragments/task_order_review/reporting.html b/templates/fragments/task_order_review/reporting.html
new file mode 100644
index 00000000..0b30db0c
--- /dev/null
+++ b/templates/fragments/task_order_review/reporting.html
@@ -0,0 +1,41 @@
+{% from "components/review_field.html" import ReviewField %}
+
+
+ {{ 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) }}
+
+
+
{{ "task_orders.new.review.app_info"| translate }}
-
-
- {{ ReviewField(("task_orders.new.review.portfolio" | translate), task_order.portfolio_name) }}
- {{ ReviewField(("task_orders.new.review.dod" | translate), task_order.defense_component, filter="normalizeOrder") }}
-
-
- {{ ReviewField(("task_orders.new.review.scope" | translate), task_order.scope) }}
-
+ {% include "fragments/task_order_review/app_info.html" %}
{{ "task_orders.new.review.reporting"| translate }}
-
-
- {{ 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) }}
-
-
-
- {% if task_order.complexity %}
-
- {% for item in task_order.complexity %}
- -
- {{ Icon('ok', classes='icon--gray icon--medium') }}{{ "forms.task_order.complexity.{}".format(item) | translate }}{% if item == 'other' %}: {{ task_order.complexity_other }}{% endif %}
-
- {% endfor %}
-
- {% endif %}
-
-
-
-
- {% if task_order.dev_team %}
-
- {% for item in task_order.dev_team %}
- -
- {% 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 %}
-
- {% endfor %}
-
- {% endif %}
-
-
- {{ ReviewField(("forms.task_order.team_experience.label" |translate), ("forms.task_order.team_experience.{}".format(task_order.team_experience)) | translate) }}
-
-
+ {% include "fragments/task_order_review/reporting.html" %}
{{ "task_orders.new.review.funding"| translate }}
-
-
- {% call ReviewField(("task_orders.new.review.performance_period" | translate), task_order.performance_length, filter="translateDuration") %}
- {% if task_order.csp_estimate %}
-
- {{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}
-
- {% else %}
-
-
{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}
- {{ Icon('alert', classes='icon--red') }}
{{ "task_orders.new.review.not_uploaded"| translate }}
- {% endif %}
- {% endcall %}
-
-
-
-
-
- {{ "task_orders.new.review.to_value"| translate }} |
-
- {% if task_order.budget %}
- {{ task_order.budget | dollarsWithCents }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_01 %}
- {{ task_order.clin_01 | dollarsWithCents }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_02 and config.CLASSIFIED %}
- {{ task_order.clin_02 | dollarsWithCents or RequiredLabel() }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_03 %}
- {{ task_order.clin_03 | dollarsWithCents or RequiredLabel() }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_04 and config.CLASSIFIED %}
- {{ task_order.clin_04 | dollarsWithCents or RequiredLabel() }}
- {% endif %}
- |
-
-
-
-
-
+ {% include "fragments/task_order_review/funding.html" %}
{{ DatePicker(form.start_date) }}
{{ DatePicker(form.end_date) }}
-
{{ "task_orders.new.review.oversight"| translate }}
-
-
- {{ 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) }}
-
-
- {{ 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) }}
-
-
+ {% include "fragments/task_order_review/oversight.html" %}
{{ "task_orders.ko_review.task_order_information"| translate }}
diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html
index dcca1abf..8834da68 100644
--- a/templates/task_orders/new/review.html
+++ b/templates/task_orders/new/review.html
@@ -3,6 +3,7 @@
{% from "components/edit_link.html" import EditLink %}
{% from "components/required_label.html" import RequiredLabel %}
{% from "components/icon.html" import Icon %}
+{% from "components/review_field.html" import ReviewField %}
{% block heading %}
{{ "task_orders.new.review.section_title"| translate }}
@@ -18,50 +19,9 @@
{% endif %}
{% endmacro %}
-{% macro ReviewField(heading, field, filter=None) %}
-
-
- {% if field %}
-
{{ field | findFilter(filter) }}
- {% else %}
- {{ RequiredLabel() }}
- {% endif %}
- {% if caller %}
- {{ caller() }}
- {% endif %}
-
-{% endmacro %}
-
-{% macro ReviewOfficerInfo(heading, first_name, last_name, email, phone_number, dod_id, officer) %}
-
-
- {{ first_name }} {{ last_name }}
- {{ email }}
- {% if phone_number %}
- {{ phone_number | usPhone }}
- {% else %}
- {{ RequiredLabel() }}
- {% endif %}
-
- {{ "task_orders.new.review.dod_id" | translate }} {{ dod_id}}
- {% if officer %}
- {{ Icon('ok', classes='icon--green') }} {{ "task_orders.new.review.invited"| translate }}
- {% else %}
- {{ Icon('alert', classes='icon--red') }} {{ "task_orders.new.review.not_invited"| translate }}
- {% endif %}
-
-{% endmacro %}
-
{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}
-
-
- {{ ReviewField(("task_orders.new.review.portfolio" | translate), task_order.portfolio_name) }}
- {{ ReviewField(("task_orders.new.review.dod" | translate), task_order.defense_component, filter="normalizeOrder") }}
-
-
- {{ ReviewField(("task_orders.new.review.scope" | translate), task_order.scope) }}
-
+{% include "fragments/task_order_review/app_info.html" %}
{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(screen=1, anchor="reporting") }}
@@ -133,95 +93,11 @@
{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(screen=2) }}
-
-
- {% call ReviewField(("task_orders.new.review.performance_period" | translate), task_order.performance_length, filter="translateDuration") %}
- {% if task_order.csp_estimate %}
-
- {{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}
-
- {% else %}
-
- {{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}
- {{ Icon('alert', classes='icon--red') }} {{ "task_orders.new.review.not_uploaded"| translate }}
-
- {% endif %}
- {% endcall %}
-
-
-
-
-
- {{ "task_orders.new.review.to_value"| translate }} |
-
- {% if task_order.budget %}
- {{ task_order.budget | dollars }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_01 %}
- {{ task_order.clin_01 | dollars }}
- {% else %}
- {{ RequiredLabel() }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_02 and config.CLASSIFIED %}
- {{ task_order.clin_02 | dollars or RequiredLabel() }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_03 %}
- {{ task_order.clin_03 | dollars or RequiredLabel() }}
- {% else %}
- {{ RequiredLabel() }}
- {% endif %}
- |
-
-
- |
-
- {% if task_order.clin_04 and config.CLASSIFIED %}
- {{ task_order.clin_04 | dollars or RequiredLabel() }}
- {% endif %}
- |
-
-
-
-
-
-
+{% include "fragments/task_order_review/funding.html" %}
{{ "task_orders.new.review.oversight"| translate }} {{ TOEditLink(screen=3) }}
-
-
- {{ 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) }}
-
-
- {{ 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) }}
-
-
+{% include "fragments/task_order_review/oversight.html" %}
{% endblock %}
{% block next %}