From 3abfd30a49b3d43ed918482608bc7a090c728d2a Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Thu, 17 Jan 2019 15:16:20 -0500 Subject: [PATCH 1/5] Use if statements to prevent filters from being called on fields with None and erroring out --- templates/task_orders/new/review.html | 64 ++++++++++++++++++++------- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 929e2910..3df07562 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -19,19 +19,51 @@ {% endmacro %} {% if task_order.defense_component %} - {% set defense_component_description = task_order.defense_component | normalizeOrder %} + {% set defense_component = task_order.defense_component | normalizeOrder %} {% endif %} {% if task_order.app_migration %} - {% set app_migration_description = "forms.task_order.app_migration.{}".format(task_order.app_migration) | translate | removeHtml %} + {% set app_migration = "forms.task_order.app_migration.{}".format(task_order.app_migration) | translate | removeHtml %} {% endif %} {% if task_order.native_apps %} - {% set native_apps_description = "task_orders.new.review.{}_native".format(task_order.native_apps) | translate %} + {% set native_apps = "task_orders.new.review.{}_native".format(task_order.native_apps) | translate %} {% endif %} {% if task_order.team_experience %} - {% set team_experience_description = "forms.task_order.team_experience.{}".format(task_order.team_experience) | translate %} + {% set team_experience = "forms.task_order.team_experience.{}".format(task_order.team_experience) | translate %} +{% endif %} + +{% if task_order.performance_period %} + {% set performance_length = task_order.performance_length | translateDuration %} +{% endif %} + +{% if task_order.clin_01 %} + {% set clin_01 = '${:,.2f}'.format(task_order.clin_01) %} +{% endif %} + +{% if task_order.clin_02 %} + {% set clin_02 = '${:,.2f}'.format(task_order.clin_02) %} +{% endif %} + +{% if task_order.clin_03 %} + {% set clin_03 = '${:,.2f}'.format(task_order.clin_03) %} +{% endif %} + +{% if task_order.clin_04 %} + {% set clin_04 = '${:,.2f}'.format(task_order.clin_04) %} +{% endif %} + +{% if task_order.ko_phone_number %} + {% set ko_phone_number = task_order.ko_phone_number | usPhone %} +{% endif %} + +{% if task_order.cor_phone_number %} + {% set cor_phone_number = task_order.cor_phone_number | usPhone %} +{% endif %} + +{% if task_order.so_phone_number %} + {% set so_phone_number = task_order.so_phone_number | usPhone %} {% endif %} @@ -45,7 +77,7 @@

{{ "task_orders.new.review.dod"| translate }}

-

{{ defense_component_description or RequiredLabel() }}

+

{{ defense_component or RequiredLabel() }}

@@ -61,12 +93,12 @@

{{ "task_orders.new.review.migration"| translate }}

-

{{ app_migration_description or RequiredLabel() }}

+

{{ app_migration or RequiredLabel() }}

{{ "task_orders.new.review.native_apps"| translate }}

-

{{ native_apps_description or RequiredLabel() }}

+

{{ native_apps or RequiredLabel() }}

@@ -106,7 +138,7 @@

{{ "task_orders.new.review.experience"| translate }}

-

{{ team_experience_description or RequiredLabel() }}

+

{{ team_experience or RequiredLabel() }}

@@ -117,7 +149,7 @@

{{ "task_orders.new.review.performance_period"| translate }}

- {{ task_order.performance_length | translateDuration or RequiredLabel() }} + {{ performance_length or RequiredLabel() }}

{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}

@@ -130,7 +162,7 @@

{{ "task_orders.new.review.clin_1"| translate }}

- {{ '${:,.2f}'.format(task_order.clin_01) }} + {{ clin_1 or RequiredLabel() }}

@@ -141,13 +173,13 @@

{% if config.CLASSIFIED %} - {{ '${:,.2f}'.format(task_order.clin_02) }} + {{ clin_02 or RequiredLabel() }} {% endif %}

{{ "task_orders.new.review.clin_3"| translate }}

- {{ '${:,.2f}'.format(task_order.clin_03) }} + {{ clin_03 or RequiredLabel() }}

@@ -158,7 +190,7 @@

{% if config.CLASSIFIED %} - {{ '${:,.2f}'.format(task_order.clin_04) }} + {{ clin_04 or RequiredLabel() }} {% endif %} @@ -176,7 +208,7 @@

{{ "task_orders.new.review.ko"| translate }}

{{ task_order.ko_first_name }} {{ task_order.ko_last_name }}
{{ task_order.ko_email }}
- {{ task_order.ko_phone_number | usPhone }}
+ {{ ko_phone_number or RequiredLabel() }}
{{ "task_orders.new.review.dod_id"| translate }} {{ task_order.ko_dod_id}}
{% if task_order.ko_invite %} {{ Icon('ok', classes='icon--green') }} {{ "task_orders.new.review.invited"| translate }} @@ -189,7 +221,7 @@

{{ "task_orders.new.review.cor"| translate }}

{{ task_order.cor_first_name }} {{ task_order.cor_last_name }}
{{ task_order.cor_email }}
- {{ task_order.cor_phone_number | usPhone }}
+ {{ cor_phone_number or RequiredLabel() }}
{{ "task_orders.new.review.dod_id"| translate }} {{ task_order.cor_dod_id}}
{% if task_order.cor_invite %} {{ Icon('ok', classes='icon--green') }} {{ "task_orders.new.review.invited"| translate }} @@ -203,7 +235,7 @@

{{ "task_orders.new.review.so"| translate }}

{{ task_order.so_first_name }} {{ task_order.so_last_name }}
{{ task_order.so_email }}
- {{ task_order.so_phone_number | usPhone }}
+ {{ so_phone_number or RequiredLabel() }}
{{ "task_orders.new.review.dod_id"| translate }} {{ task_order.so_dod_id}}
{% if task_order.so_invite %} {{ Icon('ok', classes='icon--green') }} {{ "task_orders.new.review.invited"| translate }} From a4d920d005ef7ee42a6f268de32af02c6146d0c9 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Thu, 17 Jan 2019 15:55:17 -0500 Subject: [PATCH 2/5] Update review page so it can be viewed before filling in any form fields --- templates/task_orders/new/review.html | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 3df07562..90797dc6 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -38,6 +38,10 @@ {% set performance_length = task_order.performance_length | translateDuration %} {% endif %} +{% if task_order.budget %} + {% set budget = '${:,.2f}'.format(task_order.budget) %} +{% endif %} + {% if task_order.clin_01 %} {% set clin_01 = '${:,.2f}'.format(task_order.clin_01) %} {% endif %} @@ -158,7 +162,7 @@

{{ "task_orders.new.review.to_value"| translate }}

- {{ '${:,.2f}'.format(task_order.budget) }} + {{ budget or RequiredLabel() }}

{{ "task_orders.new.review.clin_1"| translate }}

@@ -254,5 +258,7 @@ {% endblock %} {% block form_action %} -
+ {% if task_order_id %} + + {% endif %} {% endblock %} From 635c301db41222e6b83b09075811575efd7e663e Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Fri, 18 Jan 2019 11:01:24 -0500 Subject: [PATCH 3/5] Create filter for dollar amounts --- atst/filters.py | 9 +++++++++ templates/task_orders/new/review.html | 10 +++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/atst/filters.py b/atst/filters.py index 524d39bb..1c368aee 100644 --- a/atst/filters.py +++ b/atst/filters.py @@ -19,6 +19,14 @@ def dollars(value): return "${:,.0f}".format(numberValue) +def dollarsWithCents(value): + try: + numberValue = float(value) + except ValueError: + numberValue = 0 + return "${:,.2f}".format(numberValue) + + def usPhone(number): phone = re.sub(r"\D", "", number) return "+1 ({}) {} - {}".format(phone[0:3], phone[3:6], phone[6:]) @@ -113,6 +121,7 @@ def normalizeOrder(title): def register_filters(app): app.jinja_env.filters["iconSvg"] = iconSvg app.jinja_env.filters["dollars"] = dollars + app.jinja_env.filters["dollarsWithCents"] = dollarsWithCents app.jinja_env.filters["usPhone"] = usPhone app.jinja_env.filters["readableInteger"] = readableInteger app.jinja_env.filters["getOptionLabel"] = getOptionLabel diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 90797dc6..54802dca 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -39,23 +39,23 @@ {% endif %} {% if task_order.budget %} - {% set budget = '${:,.2f}'.format(task_order.budget) %} + {% set budget = task_order.budget | dollarsWithCents %} {% endif %} {% if task_order.clin_01 %} - {% set clin_01 = '${:,.2f}'.format(task_order.clin_01) %} + {% set clin_01 = task_order.clin_01 | dollarsWithCents %} {% endif %} {% if task_order.clin_02 %} - {% set clin_02 = '${:,.2f}'.format(task_order.clin_02) %} + {% set clin_02 = task_order.clin_02 | dollarsWithCents %} {% endif %} {% if task_order.clin_03 %} - {% set clin_03 = '${:,.2f}'.format(task_order.clin_03) %} + {% set clin_03 = task_order.clin_03 | dollarsWithCents %} {% endif %} {% if task_order.clin_04 %} - {% set clin_04 = '${:,.2f}'.format(task_order.clin_04) %} + {% set clin_04 = task_order.clin_04 | dollarsWithCents %} {% endif %} {% if task_order.ko_phone_number %} From b7d101c1fac0f636cbff4f6abfd9c54ef42705af Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Fri, 18 Jan 2019 15:17:33 -0500 Subject: [PATCH 4/5] Create macros for displaying form fields on review page --- atst/forms/task_order.py | 4 +- templates/task_orders/new/_review_fields.html | 119 ++++++++++++ templates/task_orders/new/review.html | 182 ++---------------- translations.yaml | 16 +- 4 files changed, 142 insertions(+), 179 deletions(-) create mode 100644 templates/task_orders/new/_review_fields.html diff --git a/atst/forms/task_order.py b/atst/forms/task_order.py index f1bf67c9..c55c99b6 100644 --- a/atst/forms/task_order.py +++ b/atst/forms/task_order.py @@ -45,8 +45,8 @@ class AppInfoForm(CacheableForm): default="", ) native_apps = RadioField( - translate("forms.task_order.native_apps_label"), - description=translate("forms.task_order.native_apps_description"), + translate("forms.task_order.native_apps.label"), + description=translate("forms.task_order.native_apps.description"), choices=[("yes", "Yes"), ("no", "No"), ("not_sure", "Not Sure")], ) complexity = SelectMultipleField( diff --git a/templates/task_orders/new/_review_fields.html b/templates/task_orders/new/_review_fields.html new file mode 100644 index 00000000..25b8cc71 --- /dev/null +++ b/templates/task_orders/new/_review_fields.html @@ -0,0 +1,119 @@ +{% from "components/icon.html" import Icon %} +{% from "components/required_label.html" import RequiredLabel %} + +{% macro ReviewTextField(heading, field, filter=None) %} +
+

{{ heading | translate }}

+ {% if field %} +

{{ field | findFilter(filter) }}

+ {% else %} + {{ RequiredLabel() }} + {% endif %} +
+{% endmacro %} + +{% macro ReviewTextFieldWithDownload(heading, field, url, link_text, filter=None) %} +
+

{{ heading | translate }}

+ {% if field %} +

{{ field | findFilter(filter) }}

+ {% else %} + {{ RequiredLabel() }} + {% endif %} +

{{ Icon('download') }} {{ link_text | translate }}

+
+{% endmacro %} + +{% macro ReviewSelectField(heading, field, filter=None) %} +
+

{{ "{}.label".format(heading) | translate }}

+ {% if field %} +

{{ "{}.{}".format(heading, field) | translate | findFilter(filter) }}

+ {% else %} + {{ RequiredLabel() }} + {% endif %} +
+{% endmacro %} + +{% macro ReviewTOValueTable(budget, clin_1, clin_2, clin_3, clin_4) %} +
+ + + + + + + + + + + + + + + + + + + + + + + +

{{ "task_orders.new.review.to_value"| translate }}

+ {% if budget %} + {{ budget | dollarsWithCents }} + {% endif %} +

{{ "task_orders.new.review.clin_1"| translate }}

+ {% if clin_1 %} + {{ clin_1 | dollarsWithCents }} + {% else %} + {{ RequiredLabel() }} + {% endif %} +

+ {{ "task_orders.new.review.clin_2"| translate }} + {% if not config.CLASSIFIED %} +
{{ "task_orders.new.review.classified_inactive"| translate }}
+ {% endif %} +

+ {% if clin_2 and config.CLASSIFIED %} + {{ clin_2 | dollarsWithCents or RequiredLabel() }} + {% endif %} +

{{ "task_orders.new.review.clin_3"| translate }}

+ {% if clin_3 %} + {{ clin_3 | dollarsWithCents or RequiredLabel() }} + {% else %} + {{ RequiredLabel() }} + {% endif %} +

+ {{ "task_orders.new.review.clin_4"| translate }} + {% if not config.CLASSIFIED %} +
{{ "task_orders.new.review.classified_inactive"| translate }}
+ {% endif %} +

+ {% if clin_4 and config.CLASSIFIED %} + {{ clin_4 | dollarsWithCents or RequiredLabel() }} + {% endif %} +
+
+{% endmacro %} + +{% macro ReviewOfficerInfo(heading, first_name, last_name, email, phone_number, dod_id, invite) %} +
+

{{ heading | translate }}

+ {{ first_name }} {{ last_name }}
+ {{ email }}
+ {% if phone_number %} + {{ phone_number | usPhone }} + {% else %} + {{ RequiredLabel() }} + {% endif %} +
+ {{ "task_orders.new.review.dod_id" | translate }} {{ dod_id}}
+ {% if invite %} + {{ 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 %} diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 54802dca..023f9143 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 "task_orders/new/_review_fields.html" import ReviewTextField, ReviewTextFieldWithDownload, ReviewSelectField, ReviewTOValueTable, ReviewOfficerInfo %} {% block heading %} {{ "task_orders.new.review.section_title"| translate }} @@ -18,92 +19,23 @@ {% endif %} {% endmacro %} -{% if task_order.defense_component %} - {% set defense_component = task_order.defense_component | normalizeOrder %} -{% endif %} - -{% if task_order.app_migration %} - {% set app_migration = "forms.task_order.app_migration.{}".format(task_order.app_migration) | translate | removeHtml %} -{% endif %} - -{% if task_order.native_apps %} - {% set native_apps = "task_orders.new.review.{}_native".format(task_order.native_apps) | translate %} -{% endif %} - -{% if task_order.team_experience %} - {% set team_experience = "forms.task_order.team_experience.{}".format(task_order.team_experience) | translate %} -{% endif %} - -{% if task_order.performance_period %} - {% set performance_length = task_order.performance_length | translateDuration %} -{% endif %} - -{% if task_order.budget %} - {% set budget = task_order.budget | dollarsWithCents %} -{% endif %} - -{% if task_order.clin_01 %} - {% set clin_01 = task_order.clin_01 | dollarsWithCents %} -{% endif %} - -{% if task_order.clin_02 %} - {% set clin_02 = task_order.clin_02 | dollarsWithCents %} -{% endif %} - -{% if task_order.clin_03 %} - {% set clin_03 = task_order.clin_03 | dollarsWithCents %} -{% endif %} - -{% if task_order.clin_04 %} - {% set clin_04 = task_order.clin_04 | dollarsWithCents %} -{% endif %} - -{% if task_order.ko_phone_number %} - {% set ko_phone_number = task_order.ko_phone_number | usPhone %} -{% endif %} - -{% if task_order.cor_phone_number %} - {% set cor_phone_number = task_order.cor_phone_number | usPhone %} -{% endif %} - -{% if task_order.so_phone_number %} - {% set so_phone_number = task_order.so_phone_number | usPhone %} -{% endif %} -

{{ "task_orders.new.review.app_info"| translate }} {{ TOEditLink(screen=1) }}

-
-

{{ "task_orders.new.review.portfolio"| translate }}

-

{{ task_order.portfolio_name or RequiredLabel() }}

-
- -
-

{{ "task_orders.new.review.dod"| translate }}

-

{{ defense_component or RequiredLabel() }}

-
+ {{ ReviewTextField("task_orders.new.review.portfolio", task_order.portfolio_name) }} + {{ ReviewTextField("task_orders.new.review.dod", task_order.defense_component, filter="normalizeOrder") }} +
+
+ {{ ReviewTextField("task_orders.new.review.scope", task_order.scope) }}
- -

{{ "task_orders.new.review.scope"| translate }}

-

-{{ task_order.scope or RequiredLabel() }} -

-

{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(screen=1, anchor="reporting") }}

-
-

{{ "task_orders.new.review.migration"| translate }}

-

{{ app_migration or RequiredLabel() }}

-
- -
-

{{ "task_orders.new.review.native_apps"| translate }}

-

{{ native_apps or RequiredLabel() }}

-
+ {{ ReviewSelectField("forms.task_order.app_migration", task_order.app_migration, filter="removeHtml") }} + {{ ReviewSelectField("forms.task_order.native_apps", task_order.native_apps) }}

{{ "task_orders.new.review.complexity"| translate }}

@@ -131,7 +63,6 @@ {% else %} {{ Icon('ok', classes='icon--gray icon--medium') }}{{ "forms.task_order.dev_team.{}".format(item) | translate }} {% endif %} - {% endfor %} @@ -140,10 +71,7 @@ {% endif %}
-
-

{{ "task_orders.new.review.experience"| translate }}

-

{{ team_experience or RequiredLabel() }}

-
+ {{ ReviewSelectField("forms.task_order.team_experience", task_order.team_experience) }}
@@ -151,56 +79,8 @@

{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(screen=2) }}

-
-

{{ "task_orders.new.review.performance_period"| translate }}

- {{ performance_length or RequiredLabel() }} -

{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link"| translate }}

-
- -
- - - - - - - - - - - - - - - - - - - - - - - -

{{ "task_orders.new.review.to_value"| translate }}

{{ budget or RequiredLabel() }}

{{ "task_orders.new.review.clin_1"| translate }}

{{ clin_1 or RequiredLabel() }}

- {{ "task_orders.new.review.clin_2"| translate }} - {% if not config.CLASSIFIED %} -
{{ "task_orders.new.review.classified_inactive"| translate }}
- {% endif %} -

- {% if config.CLASSIFIED %} - {{ clin_02 or RequiredLabel() }} - {% endif %} -

{{ "task_orders.new.review.clin_3"| translate }}

{{ clin_03 or RequiredLabel() }}

- {{ "task_orders.new.review.clin_4"| translate }} - {% if not config.CLASSIFIED %} -
{{ "task_orders.new.review.classified_inactive"| translate }}
- {% endif %} -

- {% if config.CLASSIFIED %} - {{ clin_04 or RequiredLabel() }} - {% endif %} -
-
+ {{ ReviewTextFieldWithDownload("task_orders.new.review.performance_period", task_order.performance_length, url="#", link_text="task_orders.new.review.usage_est_link", filter="translateDuration") }} + {{ ReviewTOValueTable(task_order.budget, task_order.clin_01, task_order.clin_02, task_order.clin_03, task_order.clin_04) }}

@@ -208,45 +88,11 @@

{{ "task_orders.new.review.oversight"| translate }} {{ TOEditLink(screen=3) }}

-
-

{{ "task_orders.new.review.ko"| translate }}

- {{ task_order.ko_first_name }} {{ task_order.ko_last_name }}
- {{ task_order.ko_email }}
- {{ ko_phone_number or RequiredLabel() }}
- {{ "task_orders.new.review.dod_id"| translate }} {{ task_order.ko_dod_id}}
- {% if task_order.ko_invite %} - {{ 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 %} -
- -
-

{{ "task_orders.new.review.cor"| translate }}

- {{ task_order.cor_first_name }} {{ task_order.cor_last_name }}
- {{ task_order.cor_email }}
- {{ cor_phone_number or RequiredLabel() }}
- {{ "task_orders.new.review.dod_id"| translate }} {{ task_order.cor_dod_id}}
- {% if task_order.cor_invite %} - {{ 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 %} -
+ {{ 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.ko_invite) }} + {{ 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.cor_invite) }}
-
-

{{ "task_orders.new.review.so"| translate }}

- {{ task_order.so_first_name }} {{ task_order.so_last_name }}
- {{ task_order.so_email }}
- {{ so_phone_number or RequiredLabel() }}
- {{ "task_orders.new.review.dod_id"| translate }} {{ task_order.so_dod_id}}
- {% if task_order.so_invite %} - {{ 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 %} -
+ {{ 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.so_invite) }}
{% endblock %} diff --git a/translations.yaml b/translations.yaml index 3dd2da51..f7131bc2 100644 --- a/translations.yaml +++ b/translations.yaml @@ -177,8 +177,12 @@ forms: both: Yes, migrating from an on-premise data center and another cloud provider none: Not planning to migrate any applications not_sure: "Not Sure" - native_apps_label: Native Apps - native_apps_description: Do you plan to develop application(s) natively in the cloud? + native_apps: + label: Native Apps + description: Do you plan to develop application(s) natively in the cloud? + 'yes': Yes, planning to develop natively in the cloud + 'no': No, not planning to develop natively in the cloud + not_sure: Not sure, unsure if planning to develop natively in the cloud complexity: label: Project Complexity description: Which of these describes how complex your team's use of the cloud will be? Select all that apply. @@ -414,14 +418,8 @@ task_orders: dod: DoD Component scope: Scope (Statement of Work) reporting: Reporting - migration: App Migration - native_apps: Native Apps - yes_native: Yes, planning to develop natively in the cloud - no_native: No, not planning to develop natively in the cloud - not_sure_native: Not sure, unsure if planning to develop natively in the cloud complexity: Project Complexity team: Development Team - experience: Team Experience funding: Funding performance_period: Period of Performance length usage_est_link: View Usage Estimate @@ -429,7 +427,7 @@ task_orders: clin_1: 'CLIN #1: Unclassified Cloud' clin_2: 'CLIN #2: Classified Cloud' clin_3: 'CLIN #3: Unclassified Cloud' - clin_4: 'CLIN $4: Classified Cloud' + clin_4: 'CLIN #4: Classified Cloud' classified_inactive: (Available Soon) oversight: Oversight ko: Contracting Officer (KO) From 02c6f0fb716f0b831a70ca265dfea29fcc01c889 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Tue, 22 Jan 2019 13:25:37 -0500 Subject: [PATCH 5/5] Refactor into one ReviewField macro --- templates/task_orders/new/_review_fields.html | 119 ------------------ templates/task_orders/new/review.html | 113 +++++++++++++++-- 2 files changed, 104 insertions(+), 128 deletions(-) delete mode 100644 templates/task_orders/new/_review_fields.html diff --git a/templates/task_orders/new/_review_fields.html b/templates/task_orders/new/_review_fields.html deleted file mode 100644 index 25b8cc71..00000000 --- a/templates/task_orders/new/_review_fields.html +++ /dev/null @@ -1,119 +0,0 @@ -{% from "components/icon.html" import Icon %} -{% from "components/required_label.html" import RequiredLabel %} - -{% macro ReviewTextField(heading, field, filter=None) %} -
-

{{ heading | translate }}

- {% if field %} -

{{ field | findFilter(filter) }}

- {% else %} - {{ RequiredLabel() }} - {% endif %} -
-{% endmacro %} - -{% macro ReviewTextFieldWithDownload(heading, field, url, link_text, filter=None) %} -
-

{{ heading | translate }}

- {% if field %} -

{{ field | findFilter(filter) }}

- {% else %} - {{ RequiredLabel() }} - {% endif %} -

{{ Icon('download') }} {{ link_text | translate }}

-
-{% endmacro %} - -{% macro ReviewSelectField(heading, field, filter=None) %} -
-

{{ "{}.label".format(heading) | translate }}

- {% if field %} -

{{ "{}.{}".format(heading, field) | translate | findFilter(filter) }}

- {% else %} - {{ RequiredLabel() }} - {% endif %} -
-{% endmacro %} - -{% macro ReviewTOValueTable(budget, clin_1, clin_2, clin_3, clin_4) %} -
- - - - - - - - - - - - - - - - - - - - - - - -

{{ "task_orders.new.review.to_value"| translate }}

- {% if budget %} - {{ budget | dollarsWithCents }} - {% endif %} -

{{ "task_orders.new.review.clin_1"| translate }}

- {% if clin_1 %} - {{ clin_1 | dollarsWithCents }} - {% else %} - {{ RequiredLabel() }} - {% endif %} -

- {{ "task_orders.new.review.clin_2"| translate }} - {% if not config.CLASSIFIED %} -
{{ "task_orders.new.review.classified_inactive"| translate }}
- {% endif %} -

- {% if clin_2 and config.CLASSIFIED %} - {{ clin_2 | dollarsWithCents or RequiredLabel() }} - {% endif %} -

{{ "task_orders.new.review.clin_3"| translate }}

- {% if clin_3 %} - {{ clin_3 | dollarsWithCents or RequiredLabel() }} - {% else %} - {{ RequiredLabel() }} - {% endif %} -

- {{ "task_orders.new.review.clin_4"| translate }} - {% if not config.CLASSIFIED %} -
{{ "task_orders.new.review.classified_inactive"| translate }}
- {% endif %} -

- {% if clin_4 and config.CLASSIFIED %} - {{ clin_4 | dollarsWithCents or RequiredLabel() }} - {% endif %} -
-
-{% endmacro %} - -{% macro ReviewOfficerInfo(heading, first_name, last_name, email, phone_number, dod_id, invite) %} -
-

{{ heading | translate }}

- {{ first_name }} {{ last_name }}
- {{ email }}
- {% if phone_number %} - {{ phone_number | usPhone }} - {% else %} - {{ RequiredLabel() }} - {% endif %} -
- {{ "task_orders.new.review.dod_id" | translate }} {{ dod_id}}
- {% if invite %} - {{ 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 %} diff --git a/templates/task_orders/new/review.html b/templates/task_orders/new/review.html index 023f9143..2e47acf1 100644 --- a/templates/task_orders/new/review.html +++ b/templates/task_orders/new/review.html @@ -3,7 +3,6 @@ {% from "components/edit_link.html" import EditLink %} {% from "components/required_label.html" import RequiredLabel %} {% from "components/icon.html" import Icon %} -{% from "task_orders/new/_review_fields.html" import ReviewTextField, ReviewTextFieldWithDownload, ReviewSelectField, ReviewTOValueTable, ReviewOfficerInfo %} {% block heading %} {{ "task_orders.new.review.section_title"| translate }} @@ -19,23 +18,57 @@ {% endif %} {% endmacro %} +{% macro ReviewField(heading, field, filter=None) %} +
+

{{ heading }}

+ {% 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, invite) %} +
+

{{ heading | translate }}

+ {{ first_name }} {{ last_name }}
+ {{ email }}
+ {% if phone_number %} + {{ phone_number | usPhone }} + {% else %} + {{ RequiredLabel() }} + {% endif %} +
+ {{ "task_orders.new.review.dod_id" | translate }} {{ dod_id}}
+ {% if invite %} + {{ 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) }}

- {{ ReviewTextField("task_orders.new.review.portfolio", task_order.portfolio_name) }} - {{ ReviewTextField("task_orders.new.review.dod", task_order.defense_component, filter="normalizeOrder") }} + {{ ReviewField(("task_orders.new.review.portfolio" | translate), task_order.portfolio_name) }} + {{ ReviewField(("task_orders.new.review.dod" | translate), task_order.defense_component, filter="normalizeOrder") }}
- {{ ReviewTextField("task_orders.new.review.scope", task_order.scope) }} + {{ ReviewField(("task_orders.new.review.scope" | translate), task_order.scope) }}

{{ "task_orders.new.review.reporting"| translate }} {{ TOEditLink(screen=1, anchor="reporting") }}

- {{ ReviewSelectField("forms.task_order.app_migration", task_order.app_migration, filter="removeHtml") }} - {{ ReviewSelectField("forms.task_order.native_apps", task_order.native_apps) }} + {{ 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.complexity"| translate }}

@@ -71,7 +104,7 @@ {% endif %} - {{ ReviewSelectField("forms.task_order.team_experience", task_order.team_experience) }} + {{ ReviewField(("forms.task_order.team_experience.label" |translate), ("forms.task_order.team_experience.{}".format(task_order.team_experience)) | translate) }}
@@ -79,8 +112,70 @@

{{ "task_orders.new.review.funding"| translate }} {{ TOEditLink(screen=2) }}

- {{ ReviewTextFieldWithDownload("task_orders.new.review.performance_period", task_order.performance_length, url="#", link_text="task_orders.new.review.usage_est_link", filter="translateDuration") }} - {{ ReviewTOValueTable(task_order.budget, task_order.clin_01, task_order.clin_02, task_order.clin_03, task_order.clin_04) }} + {% call ReviewField(("task_orders.new.review.performance_period" | translate), task_order.performance_length, filter="translateDuration") %} +

{{ Icon('download') }} {{ "task_orders.new.review.usage_est_link" | translate }}

+ {% endcall %} + +
+ + + + + + + + + + + + + + + + + + + + + + + +

{{ "task_orders.new.review.to_value"| translate }}

+ {% if task_order.budget %} + {{ task_order.budget | dollarsWithCents }} + {% endif %} +

{{ "task_orders.new.review.clin_1"| translate }}

+ {% if task_order.clin_01 %} + {{ task_order.clin_01 | dollarsWithCents }} + {% else %} + {{ RequiredLabel() }} + {% endif %} +

+ {{ "task_orders.new.review.clin_2"| translate }} + {% if not config.CLASSIFIED %} +
{{ "task_orders.new.review.classified_inactive"| translate }}
+ {% endif %} +

+ {% if task_order.clin_02 and config.CLASSIFIED %} + {{ task_order.clin_02 | dollarsWithCents or RequiredLabel() }} + {% endif %} +

{{ "task_orders.new.review.clin_3"| translate }}

+ {% if task_order.clin_03 %} + {{ task_order.clin_03 | dollarsWithCents or RequiredLabel() }} + {% else %} + {{ RequiredLabel() }} + {% endif %} +

+ {{ "task_orders.new.review.clin_4"| translate }} + {% if not config.CLASSIFIED %} +
{{ "task_orders.new.review.classified_inactive"| translate }}
+ {% endif %} +

+ {% if task_order.clin_04 and config.CLASSIFIED %} + {{ task_order.clin_04 | dollarsWithCents or RequiredLabel() }} + {% endif %} +
+