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 @@
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.
-
- Calculate how much your cloud usage will cost. A technical representative
- should help you complete this calculation.
-
- Cloud Service Provider's estimate calculator
-
-
- 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.
-
- Enter the results of your cloud usage calculations. These will correspond with
- your task order's period of performance.
-
- Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) offerings
+ {{ "task_orders.new.funding.cloud_calculations_paragraph" | translate }}
+ {{ "task_orders.new.funding.cloud_offerings_paragraph" | 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 }}
Period of Performance
+ {{ "task_orders.new.funding.performance_period_title" | translate }}
-
- Cloud Usage Estimate
+ {{ "task_orders.new.funding.estimate_usage_title" | translate }}
- Upload a copy of your CSP Cost Estimate Research
+ {{ "task_orders.new.funding.estimate_usage_paragraph" | translate | safe }}
-
- Cloud Usage Calculations
+ {{ "task_orders.new.funding.cloud_calculations_title" | translate }}
Cloud Offerings
- {{ "task_orders.new.funding.cloud_offerings_title" | translate }}
+ Cloud Support and Assistance
+ {{ "task_orders.new.funding.support_assistance_title" | translate }}
Total Task Order Value:
{{ "task_orders.new.funding.total" | translate }}
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}!'