diff --git a/atst/forms/data.py b/atst/forms/data.py index 957dd911..1db4a893 100644 --- a/atst/forms/data.py +++ b/atst/forms/data.py @@ -176,9 +176,13 @@ FUNDING_TYPES = [ TASK_ORDER_SOURCES = [("MANUAL", "Manual"), ("EDA", "EDA")] APP_MIGRATION = [ - ("on_premise", "Yes, migrating from an on-premise data center"), - ("cloud", "Yes, migrating from another cloud provider "), - ("none", "Not planning to migrate any applications "), + ("on_premise", "Yes, migrating from an on-premise data center"), + ("cloud", "Yes, migrating from another cloud provider"), + ( + "both", + "Yes, migrating from an on-premise data center and another cloud provider", + ), + ("none", "Not planning to migrate any applications"), ("not_sure", "Not Sure"), ] @@ -193,11 +197,10 @@ PROJECT_COMPLEXITY = [ ] DEV_TEAM = [ - ("government", "Government"), - ("civilians", "Civilians"), + ("government_civilians", "Government Civilians"), ("military", "Military "), ("contractor", "Contractor "), - ("other", "Other"), + ("other", "Other (E.g. University or other partner)"), ] TEAM_EXPERIENCE = [ diff --git a/atst/forms/task_order.py b/atst/forms/task_order.py index 5c062ae6..6e9d9ab9 100644 --- a/atst/forms/task_order.py +++ b/atst/forms/task_order.py @@ -21,52 +21,53 @@ from .data import ( DEV_TEAM, TEAM_EXPERIENCE, ) +from atst.utils.localization import translate class AppInfoForm(CacheableForm): portfolio_name = StringField( - "Organization Portfolio Name", - description="The name of your office or organization. You can add multiple applications to your portfolio. Your task orders are used to pay for these applications and their environments", + translate("forms.task_order.portfolio_name_label"), + description=translate("forms.task_order.portfolio_name_description"), ) scope = TextAreaField( - "Cloud Project Scope", - description="Your team's plan for using the cloud, such as migrating an existing application or creating a prototype.", + translate("forms.task_order.scope_label"), + description=translate("forms.task_order.scope_description"), ) defense_component = SelectField( - "Department of Defense Component", choices=SERVICE_BRANCHES + translate("forms.task_order.defense_component_label"), choices=SERVICE_BRANCHES ) app_migration = RadioField( - "App Migration", - description="Do you plan to migrate existing application(s) to the cloud?", + translate("forms.task_order.app_migration_label"), + description=translate("forms.task_order.app_migration_description"), choices=APP_MIGRATION, default="", ) native_apps = RadioField( - "Native Apps", - description="Do you plan to develop application(s) natively in the cloud? ", + 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( - "Project Complexity", - description="Which of these describes how complex your team's use of the cloud will be? (Select all that apply.)", + translate("forms.task_order.complexity_label"), + description=translate("forms.task_order.complexity_description"), choices=PROJECT_COMPLEXITY, default="", widget=ListWidget(prefix_label=False), option_widget=CheckboxInput(), ) - complexity_other = StringField("Project Complexity Other") + complexity_other = StringField(translate("forms.task_order.complexity_other_label")) dev_team = SelectMultipleField( - "Development Team", - description="Which people or teams will be completing the development work for your cloud applications?", + translate("forms.task_order.dev_team_label"), + description=translate("forms.task_order.dev_team_description"), choices=DEV_TEAM, default="", widget=ListWidget(prefix_label=False), option_widget=CheckboxInput(), ) - dev_team_other = StringField("Development Team Other") + dev_team_other = StringField(translate("forms.task_order.dev_team_other_label")) team_experience = RadioField( - "Team Experience", - description="How much experience does your team have with development in the cloud?", + translate("forms.task_order.team_experience_label"), + description=translate("forms.task_order.team_experience_description"), choices=TEAM_EXPERIENCE, default="", ) diff --git a/atst/routes/task_orders/new.py b/atst/routes/task_orders/new.py index 266bcf57..9b33c088 100644 --- a/atst/routes/task_orders/new.py +++ b/atst/routes/task_orders/new.py @@ -15,12 +15,13 @@ from atst.domain.workspaces import Workspaces from atst.domain.workspace_roles import WorkspaceRoles import atst.forms.task_order as task_order_form from atst.services.invitation import Invitation as InvitationService +from atst.utils.localization import translate TASK_ORDER_SECTIONS = [ { "section": "app_info", - "title": "What You're Building", + "title": "What You're Making", "template": "task_orders/new/app_info.html", "form": task_order_form.AppInfoForm, }, diff --git a/templates/task_orders/_new.html b/templates/task_orders/_new.html index 1f406b7f..ec860310 100644 --- a/templates/task_orders/_new.html +++ b/templates/task_orders/_new.html @@ -38,6 +38,7 @@
+
{% endblock %} diff --git a/templates/task_orders/new/app_info.html b/templates/task_orders/new/app_info.html index 9e01a1fc..e32b69f6 100644 --- a/templates/task_orders/new/app_info.html +++ b/templates/task_orders/new/app_info.html @@ -6,42 +6,40 @@ {% from "components/multi_checkbox_input.html" import MultiCheckboxInput %} {% block heading %} - What You're Building + {{ "task_orders.new.app_info.section_title"| translate }} {% endblock %} {% block form %} -

Basic Information

+

{{ "task_orders.new.app_info.basic_info_title"| translate }}

{{ TextInput(form.portfolio_name, placeholder="The name of your office or organization") }} {{ TextInput(form.scope, paragraph=True) }}

- Not sure how to describe your scope? Read some Sample Scopes to - get an idea of what is appropriate. + {{ "task_orders.new.app_info.sample_scope" | translate | safe }}

+ {{ OptionsInput(form.defense_component) }}
-

About Your Project

+

{{ "task_orders.new.app_info.project_title" | translate }}

{{ OptionsInput(form.app_migration) }} {{ OptionsInput(form.native_apps) }} {{ MultiCheckboxInput(form.complexity, form.complexity_other) }}
-

About Your Team

+

{{ "task_orders.new.app_info.team_title" | translate }}

{{ MultiCheckboxInput(form.dev_team, form.dev_team_other) }} {{ OptionsInput(form.team_experience) }}
-

Market Research

+

{{ "task_orders.new.app_info.market_research_title" | translate }}

-The JEDI Cloud Computing Program Office (CCPO) has completed the market -research requirement for all related task orders. The Department of Defense CIO -has approved this research. View JEDI Cloud Market Research +{{ "task_orders.new.app_info.market_research_paragraph" | translate | safe }}

diff --git a/translations.yaml b/translations.yaml index 61859980..88cd0186 100644 --- a/translations.yaml +++ b/translations.yaml @@ -1,3 +1,13 @@ +# How to use text containing html tags in .html files: + # In the template add the `safe` filter when referencing the string + # from the template file. ie: + + # login: + # title: A title with a link! + + # `{{ "login.title" | translate | safe }}` + + audit_log: events: default: @@ -153,6 +163,24 @@ forms: environment_names_required_validation_message: Provide at least one environment name. environment_names_unique_validation_message: Environment names must be unique. name_label: Project Name + task_order: + portfolio_name_label: Organization Portfolio Name + portfolio_name_description: The name of your office or organization. You can add multiple applications to your portfolio. Your task orders are used to pay for these applications and their environments. + scope_label: Cloud Project Scope + scope_description: Your team's plan for using the cloud, such as migrating an existing application or creating a prototype. + defense_component_label: Department of Defense Component + app_migration_label: App Migration + app_migration_description: Do you plan to migrate existing application(s) to the cloud? + native_apps_label: Native Apps + native_apps_description: Do you plan to develop application(s) natively in the cloud? + complexity_label: Project Complexity + complexity_description: Which of these describes how complex your team's use of the cloud will be? Select all that apply. + complexity_other_label: Project Complexity Other + dev_team_label: Development Team + dev_team_description: Which people or teams will be completing the development work for your cloud applications? Select all that apply. + 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? validators: is_number_message: Please enter a valid number. list_item_required_message: Please provide at least one. @@ -295,6 +323,17 @@ requests: num_software_systems_tooltip: 'A software system can be any code that you plan to host on cloud infrastructure. For example, it could be a custom-developed web application, or a large ERP system.' questions_title_text: Questions related to JEDI Cloud migration rationalization_software_systems_tooltip: Rationalization is the DoD process to determine whether the application should move to the cloud. +task_orders: + new: + app_info: + section_title: "What You're Making" + basic_info_title: Basic information + sample_scope: | + Not sure how to describe your scope? Read some Sample Scopes to get an idea of what is appropriate. + project_title: About your project + 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' testing: example_string: Hello World example_with_variables: 'Hello, {name}!'