From 922ec561344e80e94292cd8922abc54d98b47851 Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Thu, 10 Jan 2019 08:21:45 -0500 Subject: [PATCH] Update TO funding section --- atst/domain/task_orders.py | 2 + atst/forms/data.py | 27 ++++++++++ atst/forms/task_order.py | 30 ++++++++--- templates/components/text_input.html | 1 + templates/task_orders/new/funding.html | 72 ++++++++------------------ translations.yaml | 29 +++++++++++ 6 files changed, 104 insertions(+), 57 deletions(-) diff --git a/atst/domain/task_orders.py b/atst/domain/task_orders.py index 865b5b05..e0537e87 100644 --- a/atst/domain/task_orders.py +++ b/atst/domain/task_orders.py @@ -24,7 +24,9 @@ class TaskOrders(object): "team_experience", ], "funding": [ + "performance_length", "start_date", + "csp_cost_estimate", "end_date", "clin_01", "clin_02", diff --git a/atst/forms/data.py b/atst/forms/data.py index 1db4a893..07be22ce 100644 --- a/atst/forms/data.py +++ b/atst/forms/data.py @@ -213,3 +213,30 @@ TEAM_EXPERIENCE = [ "Built or migrated many applications, or consulted on several such projects", ), ] + +PERIOD_OF_PERFORMANCE_LENGTH = [ + ("1_month", "1 Month"), + ("2_months", "2 Months"), + ("3_months", "3 Months"), + ("4_months", "4 Months"), + ("5_months", "5 Months"), + ("6_months", "6 Months"), + ("7_months", "7 Months"), + ("8_months", "8 Months"), + ("9_months", "9 Months"), + ("10_months", "10 Months"), + ("11_months", "11 Months"), + ("1_year", "1 Year"), + ("1_year_1_month", "1 Year, 1 Month"), + ("1_year_2_months", "1 Year, 2 Months"), + ("1_year_3_months", "1 Year, 3 Months"), + ("1_year_4_months", "1 Year, 4 Months"), + ("1_year_5_months", "1 Year, 5 Months"), + ("1_year_6_months", "1 Year, 6 Months"), + ("1_year_7_months", "1 Year, 7 Months"), + ("1_hyear_8_months", "1 Year, 8 Months"), + ("1_year_9_months", "1 Year, 9 Months"), + ("1_year_10_months", "1 Year, 10 Months"), + ("1_year_11_months", "1 Year, 11 Months"), + ("2_years", "2 Years"), +] diff --git a/atst/forms/task_order.py b/atst/forms/task_order.py index 6e9d9ab9..7473eba1 100644 --- a/atst/forms/task_order.py +++ b/atst/forms/task_order.py @@ -6,6 +6,7 @@ from wtforms.fields import ( SelectMultipleField, StringField, TextAreaField, + FileField, ) from wtforms.fields.html5 import DateField from wtforms.widgets import ListWidget, CheckboxInput @@ -20,6 +21,7 @@ from .data import ( PROJECT_COMPLEXITY, DEV_TEAM, TEAM_EXPERIENCE, + PERIOD_OF_PERFORMANCE_LENGTH, ) from atst.utils.localization import translate @@ -74,17 +76,29 @@ class AppInfoForm(CacheableForm): class FundingForm(CacheableForm): - start_date = DateField("Start Date", format="%m/%d/%Y") - end_date = DateField("End Date", format="%m/%d/%Y") - clin_01 = IntegerField("CLIN 01 : Unclassified") - clin_02 = IntegerField("CLIN 02: Classified") - clin_03 = IntegerField("CLIN 03: Unclassified") - clin_04 = IntegerField("CLIN 04: Classified") + performance_length = SelectField( + translate("forms.task_order.performance_length_label"), + choices=PERIOD_OF_PERFORMANCE_LENGTH, + ) + start_date = DateField( + translate("forms.task_order.start_date_label"), format="%m/%d/%Y" + ) + end_date = DateField( + translate("forms.task_order.end_date_label"), format="%m/%d/%Y" + ) + csp_cost_estimate = FileField( + translate("forms.task_order.csp_cost_est_label"), + description=translate("forms.task_order.csp_cost_est_description"), + ) + clin_01 = IntegerField(translate("forms.task_order.clin_01_label")) + clin_02 = IntegerField(translate("forms.task_order.clin_02_label")) + clin_03 = IntegerField(translate("forms.task_order.clin_03_label")) + clin_04 = IntegerField(translate("forms.task_order.clin_04_label")) class UnclassifiedFundingForm(FundingForm): - clin_02 = IntegerField("CLIN 02: Classified (available soon)") - clin_04 = IntegerField("CLIN 04: Classified (available soon)") + clin_02 = IntegerField(translate("forms.task_order.unclassified_clin_02_label")) + clin_04 = IntegerField(translate("forms.task_order.unclassified_clin_04_label") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/templates/components/text_input.html b/templates/components/text_input.html index 21a0839d..e34fe429 100644 --- a/templates/components/text_input.html +++ b/templates/components/text_input.html @@ -69,6 +69,7 @@ type='text' {% if disabled %} disabled="disabled" + readonly="readonly" {% endif %} ref='input' placeholder='{{ placeholder }}'> diff --git a/templates/task_orders/new/funding.html b/templates/task_orders/new/funding.html index 23586216..0515953c 100644 --- a/templates/task_orders/new/funding.html +++ b/templates/task_orders/new/funding.html @@ -5,7 +5,7 @@ {% from "components/date_input.html" import DateInput %} {% block heading %} - Funding + {{ "task_orders.new.funding.section_title" | translate }} {% endblock %} {% block form %} @@ -13,65 +13,42 @@
-

Period of Performance

+

{{ "task_orders.new.funding.performance_period_title" | translate }}

-

Choose the dates your task order will cover.

+ {{ "task_orders.new.funding.performance_period_paragraph" | translate | safe }} -

- Because your funds will be lost if you don’t use them, we strongly recommend - submitting small, short-duration task orders, usually a three month period. - We’ll notify you when your period of performance is nearing the end so you can - request your next set of funds with a new task order. -

- - {{ DateInput(form.start_date, placeholder='MM / DD / YYYY', validation='date') }} - {{ DateInput(form.end_date, placeholder='MM / DD / YYYY', validation='date') }} + {{ OptionsInput(form.performance_length) }}
-

Cloud Usage Estimate

+

{{ "task_orders.new.funding.estimate_usage_title" | translate }}

-

- Calculate how much your cloud usage will cost. A technical representative - should help you complete this calculation. - - Cloud Service Provider's estimate calculator - -

-

Upload a copy of your CSP Cost Estimate Research

+ {{ "task_orders.new.funding.estimate_usage_paragraph" | translate | safe }} -

- Upload your anticipated cloud usage from the CSP tool linked above. PDFs and - screengrabs of the tool are sufficient. -

-

- This is only an estimation tool to help you make and informed evaluation of - what you expect to use. While you're tied to the dollar amount you specify in - your task order, you're not obligated by the resources you indicate in the - calculator. -

- +
+ {{ form.csp_cost_estimate.label }} + {{ form.csp_cost_estimate.description }} + {{ form.csp_cost_estimate }} +

-

Cloud Usage Calculations

+

{{ "task_orders.new.funding.cloud_calculations_title" | translate }}

- Enter the results of your cloud usage calculations. These will correspond with - your task order's period of performance. -

-

Cloud Offerings

-

- Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) offerings + {{ "task_orders.new.funding.cloud_calculations_paragraph" | translate }}

- {{ TextInput(form.clin_01, validation='dollars') }} +

{{ "task_orders.new.funding.cloud_offerings_title" | translate }}

+

+ {{ "task_orders.new.funding.cloud_offerings_paragraph" | translate }} +

+ + {{ TextInput(form.clin_01, validation='dollars', placeholder="$0.00") }} {{ TextInput(form.clin_02, validation='dollars', disabled=(not config.CLASSIFIED)) }} -

Cloud Support and Assistance

+

{{ "task_orders.new.funding.support_assistance_title" | translate }}

- Technical guidance from the cloud service provider, including architecture, - configuration of IaaS and PaaS, integration, troubleshooting assistance, and - other services. + {{ "task_orders.new.funding.support_assistance_paragraph" | translate }}

- {{ TextInput(form.clin_03, validation='dollars', tooltip='The cloud support and assistance packages cannot be used as a primary development resource.') }} + {{ TextInput(form.clin_03, validation='dollars', tooltip='The cloud support and assistance packages cannot be used as a primary development resource.', placeholder="$0.00") }} {{ TextInput(form.clin_04, validation='dollars', tooltip='The cloud support and assistance packages cannot be used as a primary development resource.', disabled=(not config.CLASSIFIED)) }}
@@ -81,13 +58,10 @@ {% block next %}
-

Total Task Order Value:

+

{{ "task_orders.new.funding.total" | translate }}

{{ super() }}
{% endblock %} - - - diff --git a/translations.yaml b/translations.yaml index 88cd0186..3fc7d46d 100644 --- a/translations.yaml +++ b/translations.yaml @@ -181,6 +181,17 @@ forms: dev_team_other_label: Development Team Other team_experience_label: Team Experience team_experience_description: How much experience does your team have with development in the cloud? + performance_length_label: Period of Performance length + start_date_label: Start Date + end_date_label: End Date + csp_cost_est_label: Upload a copy of your CSP Cost Estimate Research + csp_cost_est_description: Upload a PDF or screenshot fo your usage estimate from the calculator. + clin_01_label: 'CLIN 01 : Unclassifie'd + clin_02_label: 'CLIN 02: Classified' + clin_03_label: 'CLIN 03: Unclassified' + clin_04_label: 'CLIN 04: Classified' + unclassified_clin_02_label: 'CLIN 02: Classified (available soon)' + unclassified_clin_04_label: 'CLIN 04: Classified (available soon)' validators: is_number_message: Please enter a valid number. list_item_required_message: Please provide at least one. @@ -334,6 +345,24 @@ task_orders: team_title: About your team market_research_title: Market Research market_research_paragraph: 'The JEDI Cloud Computing Program Office (CCPO) has completed the market research requirements for all related task orders. The Department of Defense CIO has approved this research.
View JEDI Market Research Memo' + funding: + section_title: Funding + performance_period_title: Period of Performance + performance_period_paragraph: | +

Choose the dates your task order will cover.

+

Because your funds will be lost if you don’t use them, we strongly recommend submitting small, short-duration task orders, usually a three month period. We’ll notify you when your period of performance is nearing the end so you can request your next set of funds with a new task order.

+ estimate_usage_title: Estimate Your Cloud Usage + estimate_usage_paragraph: | +

Calculate how much your cloud usage will cost. A technical representative should help you complete this calculation. These calculatiosnd will become your CLINs.

+

**link image** Cloud Service Provider's estimate calculator

+

This is only an estimation tool to help you make an informed evaluation of what you expect to use. While you're tied to the dollar amount you specify in your task order, you're not obligated by the resources you indicate in the calculator.

+ cloud_calculations_title: Cloud Usage Calculations + cloud_calculations_paragraph: Enter the results of your cloud usage calculations. + cloud_offerings_title: Cloud Offerings + cloud_offerings_paragraph: Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) offerings + support_assistance_title: Cloud Support and Assistance + support_assistance_paragraph: Technical guidance from the cloud service provider, including architecture, configuration of IaaS and PaaS, integration, troubleshooting assistance, and other services. + total: 'Total Task Order Value:' testing: example_string: Hello World example_with_variables: 'Hello, {name}!'