Merge pull request #1336 from dod-ccpo/copy-updates

Copy updates
This commit is contained in:
leigh-mil 2020-01-22 15:18:27 -05:00 committed by GitHub
commit 41c8a5d187
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 97 additions and 79 deletions

View File

@ -28,6 +28,7 @@ class PortfolioForm(BaseForm):
class PortfolioCreationForm(PortfolioForm):
defense_component = SelectMultipleField(
translate("forms.portfolio.defense_component.title"),
choices=SERVICE_BRANCHES,
widget=ListWidget(prefix_label=False),
option_widget=CheckboxInput(),

View File

@ -509,11 +509,7 @@ def resend_invite(application_id, application_role_id):
token=new_invite.token,
)
flash(
"application_invite_resent",
user_name=new_invite.user_name,
application_name=app_role.application.name,
)
flash("application_invite_resent", email=new_invite.email)
else:
flash(
"application_invite_error",

View File

@ -65,7 +65,7 @@ def resend_invitation(portfolio_id, portfolio_token):
inviter_name=g.current_user.full_name,
token=invite.token,
)
flash("resend_portfolio_invitation", user_name=invite.user_name)
flash("resend_portfolio_invitation", email=invite.email)
else:
user_name = f"{form['user_data']['first_name'].data} {form['user_data']['last_name'].data}"
flash("resend_portfolio_invitation_error", user_name=user_name)

View File

@ -29,7 +29,7 @@ MESSAGES = {
"category": "error",
},
"application_invite_resent": {
"title": "flash.application_invite.resent.title",
"title": None,
"message": "flash.application_invite.resent.message",
"category": "success",
},
@ -90,7 +90,7 @@ MESSAGES = {
},
"insufficient_funds": {
"title": "flash.task_order.insufficient_funds.title",
"message": "",
"message": None,
"category": "warning",
},
"logged_out": {
@ -109,8 +109,8 @@ MESSAGES = {
"category": "success",
},
"new_portfolio_member": {
"title": "flash.success",
"message": "flash.new_portfolio_member",
"title": "flash.new_portfolio_member.title",
"message": "flash.new_portfolio_member.message",
"category": "success",
},
"portfolio_member_removed": {
@ -124,7 +124,7 @@ MESSAGES = {
"category": "success",
},
"resend_portfolio_invitation": {
"title": "flash.portfolio_invite.resent.title",
"title": None,
"message": "flash.portfolio_invite.resent.message",
"category": "success",
},

View File

@ -101,7 +101,7 @@ export default {
if (!!this.clinNumber) {
return `CLIN ${this.clinNumber}`
} else {
return `CLIN`
return `New CLIN`
}
},
percentObligated: function() {

View File

@ -84,7 +84,7 @@
{{ TextInput(edit_form.name, validation='requiredField', optional=False) }}
{{
SaveButton(
text=("common.save" | translate)
text=("common.save_changes" | translate)
)
}}
</form>

View File

@ -21,7 +21,7 @@
{{ sub_form.environment_name.data }}
</div>
<div class="usa-input__help">
{{ role }}
{{ "portfolios.applications.members.roles.{}".format(role) | translate }}
</div>
</div>
<div class="form-col form-col--third">
@ -124,6 +124,6 @@
{{ TextInput(member_form.email, validation='email', optional=False) }}
{{ PhoneInput(member_form.phone_number, member_form.phone_ext)}}
{{ TextInput(member_form.dod_id, validation='dodId', optional=False) }}
<a href="#">How do I find the DoD ID?</a>
<a href="#">{{ "forms.new_member.dod_help" | translate }}</a>
</div>
{% endmacro %}

View File

@ -46,7 +46,7 @@
{{ member_form.SubmitStep(
name=modal_name,
form=member_fields.PermsFields(form=member.form, member_role_id=member.role_id),
submit_text="Update",
submit_text="common.save_changes"|translate,
previous=False,
modal=modal_name,
) }}
@ -179,7 +179,7 @@
member_form.SubmitStep(
name=new_member_modal_name,
form=member_fields.PermsFields(form=new_member_form, new=True),
submit_text="portfolios.applications.members.form.add_member"|translate,
submit_text="common.save_changes"|translate,
modal=new_member_modal_name,
)
],

View File

@ -27,13 +27,13 @@
<span class="action-group-footer">
<a class="usa-button" href="{{ url_for('applications.settings', application_id=application_id) }}">
Return to Application Settings
{{ "portfolios.applications.new.step_3_button_text" | translate }}
</a>
<a class="usa-button usa-button-secondary" href="{{ url_for('applications.view_new_application_step_2', application_id=application.id) }}">
Previous
{{ "common.previous" | translate }}
</a>
<a href="{{ url_for('applications.portfolio_applications', portfolio_id=portfolio.id) }}">
Cancel
{{ "common.cancel" | translate }}
</a>
</span>

View File

@ -118,7 +118,7 @@
{{ CLINDollarAmount("obligated", funding_validation=True) }}
{% endif %}
<div class="h5 clin-card__title">Percent Obligated</div>
<div class="h5 clin-card__title">{{ "task_orders.form.step_3.percent_obligated" | translate }}</div>
<p id="percent-obligated" v-text='percentObligated'></p>
<hr>

View File

@ -17,15 +17,6 @@
{%- endif %}
</p>
</div>
<div class="panel__body">
<hr>
<p>
{{ "common.lorem" | translate }}
</p>
<p>
<a href="#">More lorem</a>
</p>
</div>
</main>
{% endblock %}

View File

@ -32,6 +32,6 @@
{{ TextInput(member_form.email, validation='email', optional=False) }}
{{ PhoneInput(member_form.phone_number, member_form.phone_ext)}}
{{ TextInput(member_form.dod_id, validation='dodId', optional=False) }}
<a href="#">How do I find the DoD ID?</a>
<a href="#">{{ "forms.new_member.dod_help" | translate }}</a>
</div>
{% endmacro %}

View File

@ -12,9 +12,9 @@
{% include "fragments/flash.html" %}
<div class='portfolio-header__name'>
<p>{{ "portfolios.header" | translate }}</p>
<h1>{{ "New Portfolio" }}</h1>
<h1>{{ "portfolios.new.title" | translate }}</h1>
</div>
{{ StickyCTA(text="Create New Portfolio") }}
{{ StickyCTA(text="portfolios.new.cta_step_1"|translate, context=("portfolios.new.sticky_header_context"|translate({"step": "1"}) )) }}
<base-form inline-template>
<div class="row">
<form id="portfolio-create" class="col" action="{{ url_for('portfolios.create_portfolio') }}" method="POST">
@ -39,9 +39,9 @@
</div>
<div class='action-group-footer'>
{% block next_button %}
{{ SaveButton(text=('common.save' | translate), form="portfolio-create", element="input") }}
{{ SaveButton(text=('portfolios.new.save' | translate), form="portfolio-create", element="input") }}
{% endblock %}
<a href="{{ url_for('atst.home') }}">
<a class="usa-button usa-button-secondary" href="{{ url_for('atst.home') }}">
Cancel
</a>
</form>
@ -49,4 +49,3 @@
</base-form>
</main>
{% endblock %}

View File

@ -5,15 +5,15 @@
<section class="row">
<div class='col col--grow summary-item'>
<h5 class="summary-item__header">
<span class="summary-item__header-text">Total Portfolio Value</span>
{{Tooltip(("common.lorem" | translate), title="", classes="summary-item__header-icon")}}
<span class="summary-item__header-text">{{ "portfolios.reports.total_value.header" | translate }}</span>
{{Tooltip(("portfolios.reports.total_value.tooltip" | translate), title="", classes="summary-item__header-icon")}}
</h5>
<p class="summary-item__value">{{ total_portfolio_value | dollars }}</p>
</div>
<div class='col col--grow summary-item'>
<h5 class="summary-item__header">
<span class="summary-item__header-text">Funding Duration</span>
{{Tooltip(("common.lorem" | translate), title="", classes="summary-item__header-icon")}}
<span class="summary-item__header-text">{{ "portfolios.reports.duration.header" | translate }}</span>
{{Tooltip(("portfolios.reports.duration.tooltip" | translate), title="", classes="summary-item__header-icon")}}
</h5>
{% set earliest_pop_start_date, latest_pop_end_date = portfolio.funding_duration %}
{% if earliest_pop_start_date and latest_pop_end_date %}
@ -28,8 +28,8 @@
</div>
<div class='col col--grow summary-item'>
<h5 class="summary-item__header">
<span class="summary-item__header-text">Days Remaining</span>
{{Tooltip(("common.lorem" | translate), title="", classes="summary-item__header-icon")}}
<span class="summary-item__header-text">{{ "portfolios.reports.days_remaining.header" | translate }}</span>
{{Tooltip(("portfolios.reports.days_remaining.toolip" | translate), title="", classes="summary-item__header-icon")}}
</h5>
<p class="summary-item__value">{{ portfolio.days_to_funding_expiration }} days</p>
</div>

View File

@ -11,16 +11,7 @@
<section class="row">
<div class='col col--grow summary-item'>
<h4 class="summary-item__header">
<span class="summary-item__header-text">Total obligated funds</span>
{{ Tooltip(("task_orders.review.tooltip.obligated_funds" | translate), title="", classes="summary-item__header-icon") }}
</h4>
<p class="summary-item__value--large">
{{ obligated_funds | dollars }}
</p>
</div>
<div class='col col--grow summary-item'>
<h4 class="summary-item__header">
<span class="summary-item__header-text">Total Task Order value</span>
<span class="summary-item__header-text">{{ 'task_orders.summary.total' | translate }}</span>
{{ Tooltip(("task_orders.review.tooltip.total_value" | translate), title="", classes="summary-item__header-icon") }}
</h4>
<p class="summary-item__value--large">
@ -29,7 +20,16 @@
</div>
<div class='col col--grow summary-item'>
<h4 class="summary-item__header">
<span class="summary-item__header-text">Total expended funds</span>
<span class="summary-item__header-text">{{ 'task_orders.summary.obligated' | translate }}</span>
{{ Tooltip(("task_orders.review.tooltip.obligated_funds" | translate), title="", classes="summary-item__header-icon") }}
</h4>
<p class="summary-item__value--large">
{{ obligated_funds | dollars }}
</p>
</div>
<div class='col col--grow summary-item'>
<h4 class="summary-item__header">
<span class="summary-item__header-text">{{ 'task_orders.summary.expended' | translate }}</span>
{{ Tooltip(("task_orders.review.tooltip.expended_funds" | translate), title="", classes="summary-item__header-icon") }}
</h4>
<p class="summary-item__value--large">
@ -39,7 +39,7 @@
</section>
<hr>
<section>
<h4>Documents</h4>
<h4>{{ 'task_orders.form.step_4.documents' | translate }}</h4>
<div class="panel panel__content">
{% if builder_mode %}
{{ Icon('ok', classes="icon--green icon--medium") }}
@ -52,7 +52,7 @@
</section>
<hr>
<section>
<h4>CLIN summary</h4>
<h4>{{ 'task_orders.form.step_4.clins' | translate }}</h4>
<table class="fixed-table-wrapper atat-table clin-summary">
<thead>
<tr>

View File

@ -66,7 +66,7 @@
{% call StickyCTA(text="common.task_orders"|translate) %}
{% if user_can(permissions.CREATE_TASK_ORDER) and task_orders %}
{% if user_can(permissions.CREATE_TASK_ORDER) and to_count > 0 %}
<a href="{{ url_for("task_orders.form_step_one_add_pdf", portfolio_id=portfolio.id) }}" class="usa-button usa-button-primary">
{{ "task_orders.add_new_button" | translate }}
</a>

View File

@ -16,8 +16,8 @@
{% block to_builder_form_field %}
{{ TOFormStepHeader(
title='task_orders.form.supporting_docs_header' | translate,
description='task_orders.form.supporting_docs_text' | translate,
title='task_orders.form.step_1.title' | translate,
description='task_orders.form.step_1.description' | translate,
) }}
{{ UploadInput(form.pdf, portfolio.id) }}
{% endblock %}

View File

@ -8,7 +8,7 @@
{% set next_button_text = 'task_orders.form.step_5.next_button' | translate %}
{% set previous_button_link = url_for("task_orders.form_step_four_review", task_order_id=task_order_id) %}
{% set step = "5" %}
{% set sticky_cta_text = 'task_orders.form.sticky_header_text' | translate %}
{% set sticky_cta_text = 'task_orders.form.step_5.cta_text' | translate %}
{% block to_builder_form_field %}
{{ TOFormStepHeader(

View File

@ -78,7 +78,7 @@ components:
errors:
default_sub: An error has occured!
not_found: Page Not Found
not_found_sub: Looks like that page does not exist!
not_found_sub: This page does not exist.
email:
application_invite: "{inviter_name} has invited you to a JEDI cloud application"
portfolio_invite: "{inviter_name} has invited you to a JEDI cloud portfolio"
@ -98,8 +98,7 @@ flash:
title: Application invitation error
message: There was an error processing the invitation for {user_name} from {application_name}
resent:
title: Application invitation resent
message: You have successfully resent the invite for {user_name} from {application_name}
message: "{email} has been sent an invitation to access this Application"
revoked:
title: Application invitation revoked
message: You have successfully revoked the invite for {user_name} from {application_name}
@ -137,7 +136,9 @@ flash:
logged_out:
title: Logged out
message: You've been logged out.
new_portfolio_member: 'You have successfully invited {user_name} to the portfolio.'
new_portfolio_member:
title: "{user_name}'s invitation has been sent"
message: "{user_name}'s access to this Portfolio is pending until they sign in for the first time."
new_ppoc_message: 'You have successfully added {ppoc_name} as the primary point of contact. You are no longer the PPoC.'
new_ppoc_title: Primary point of contact updated
portfolio_member:
@ -152,8 +153,7 @@ flash:
message: An unexpected problem occurred with your request, please try again. If the problem persists, contact an administrator.
portfolio_invite:
resent:
title: Invitation resent
message: Successfully sent a new invitation to {user_name}.
message: "{email} has been sent an invitation to access this Portfolio"
error:
title: Portfolio invitation error
message: There was an error processing the invitation for {user_name}.
@ -210,6 +210,7 @@ forms:
label: Edit Applications
description: Add, remove and edit applications in this Portfolio.
dod_id_label: DoD ID
dod_help: How do I find out the DoD ID?
email_label: Email address
first_name_label: First name
funding:
@ -260,6 +261,7 @@ forms:
marine_corps: Marine Corps
navy: Navy
other: Other
title: Select DoD component(s) funding your Portfolio
validation_message: You must select at least one defense component.
help_text: |
<p>
@ -276,7 +278,7 @@ forms:
upload_error: There was an error uploading your file. Please try again. If you encounter repeated problems uploading this file, please contact CCPO.
size_error: The file you have selected is too large. Please choose a file no larger than 64MB.
filename_error: File names can only contain the characters A-Z, 0-9, space, hyphen, underscore, and period.
number_description: Task order number (13 digits)
number_description: 13-Digit Task Order Number
pop_errors:
date_order: PoP start date must be before end date.
range: Date must be between {start} and {end}.
@ -285,7 +287,7 @@ forms:
start_past_contract: PoP start date must be before or on {date}.
start_pre_contract: PoP start date must be on or after {date}.
clin_funding_errors:
obligated_amount_error: Obligated amount must be less than or equal to total amount
obligated_amount_error: Obligated funds can not exceed total CLIN value
funding_range_error: Dollar amount must be from $0.00 to $1,000,000,000.00
validators:
is_number_message: Please enter a valid number.
@ -356,8 +358,8 @@ portfolios:
'False': View Reporting
'True': Edit Reporting
applications:
add_environment: Create an Environment
add_member: Add New Member
add_environment: Add an Environment
add_member: Add Team Member
add_another_environment: Add another environment
create_button: Create Application
empty_state:
@ -384,7 +386,7 @@ portfolios:
description: |
<div>
<p>
Add a brief one to two sentence description of your application. You should be able to reference your TO Description of Work.
Add a brief one to two sentence description of your Application. You should be able to reference your TO Description of Work.
</p>
<p>
<strong>Writer's Block? A description example includes:</strong>
@ -394,10 +396,11 @@ portfolios:
</p>
</div>
step_2_header: Add Environments to {application_name}
step_2_description: Development, Testing, Staging, and Production environments are included by default. However, you can add, edit, and delete environments based on the needs of your Application.
step_2_description: Production, Staging, Testing, and Development environments are included by default. However, you can add, edit, and delete environments based on the needs of your Application.
step_2_button_text: "Next: Add Members"
step_3_header: Add Members to {application_name}
step_3_description: "To proceed, you will need each member's email address and DOD ID. Within this section, you will also assign Application-level permissions and environment-level roles for each member."
step_3_button_text: Save Application
create_new_env: Create a new environment.
create_new_env_info: Creating an environment gives you access to the Cloud Service Provider. This environment will function within the constraints of the task order, and any costs will be billed against the portfolio.
csp_link: Cloud Service Provider Link
@ -429,7 +432,7 @@ portfolios:
description: Additional role controls are available in the CSP console. <a href="#"> Learn More </a>
revoke_warning: Save changes to revoke access, <strong>this can not be undone.</strong>
suspended: Suspended access cannot be modified.
next_button: "Next: Permissions"
next_button: "Next: Roles and Permissions"
app_perms:
title: Application Permissions
description: Application permissions allow users to provision and modify applications and teams. <a href="#"> Learn More </a>
@ -449,10 +452,25 @@ portfolios:
perms_del_env:
'False': ""
'True': Delete Application
roles:
ADMIN: Admin
BILLING_READ: Billing Read-only
CONTRIBUTOR: Contributor
header: PORTFOLIO
new:
title: New Portfolio
cta_step_1: Name and Describe Portfolio
sticky_header_context: 'Step {step} of 1'
save: Save Portfolio
members:
archive_button: Delete member
reports:
days_remaining:
header: Days Remaining
toolip: Days remaining are the days of funding remaining in the portfolio.
duration:
header: Funding Duration
tooltip: Funding duration is the period of time that there is a valid task order funding the portfolio.
estimate_warning: Reports displayed in JEDI are estimates and not a system of record.
empty_state:
message: Nothing to report.
@ -460,6 +478,9 @@ portfolios:
can_create_applications: This portfolio has no cloud environments set up, so there is no spending data to report. Create an application with some cloud environments to get started.
cannot_create_applications: This portfolio has no cloud environments set up, so there is no spending data to report. Contact the portfolio owner to set up some cloud environments.
action_label: 'Add a new application'
total_value:
header: Total Portfolio Value
tooltip: Total portfolio value is all obligated and projected funds for all task orders in this portfolio.
task_orders:
add_new_button: Add New Task Order
review:
@ -480,9 +501,9 @@ task_orders:
total_value: All obligated and projected funds for the Task Orders Base and Option CLINs.
expended_funds: All funds spend from the Task Order so far.
form:
add_clin: Add another CLIN
add_to_header: Add your task order
add_to_description: Now, refer to your document to find the 13-digit task order number. It should be located at lorem ipsum dolar. From now on we'll refer to this portion of funding by the recorded task order number.
add_clin: Add Another CLIN
add_to_header: Enter the Task Order number
add_to_description: Please input your 13-digit Task Order number. This number may be listed under "Order Number" if your Contracting Officer used form 1149, or "Delivery Order/Call No." if form 1155 was used. Moving forward, this portion of funding will be referenced by the recorded Task Order number.
clin_title: Enter Contract Line Items
clin_description: "Refer to your task order to locate your Contract Line Item Numbers (CLINs)."
clin_details: CLIN Details
@ -496,19 +517,25 @@ task_orders:
draft_alert_message: You can return to the Task Order Builder to enter missing information. Once you are finished, youll be ready to submit this request.
total_funds_label: Total CLIN Value
obligated_funds_label: Obligated Funds
pop: Period of Performance
pop: Period of Performance (PoP)
pop_end: End Date
pop_end_alert: "A CLIN's period of performance must end before {end_date}."
pop_example: "For example: 07 04 1776"
pop_start: Start Date
supporting_docs_header: Upload your supporting documentation
supporting_docs_size_limit: Your file may not exceed 64MB
supporting_docs_text: Upload a single PDF containing all relevant information.
step_1:
title: Upload your approved Task Order (TO)
description: Upload your approved Task Order here. You are required to confirm you have the appropriate signature. You will have the ability to add additional approved Task Orders with more funding to this Portfolio in the future.
step_3:
next_button: 'Next: Review Task Order'
percent_obligated: '% of Funds Obligated'
step_4:
documents: Documents
clins: CLIN Summary
step_5:
cta_text: Verify Your Information
description: Prior to submitting the Task Order, you must acknowledge, by marking the appropriate box below, that the uploaded Task Order is signed by an appropriate, duly warranted Contracting Officer who has the authority to execute the uploaded Task Order on your Agencys behalf and has authorized you to upload the Task Order in accordance with Agency policy and procedures. You must further acknowledge, by marking the appropriate box below, that all information entered herein matches that of the submitted Task Order.
next_button: 'Confirm & Submit'
next_button: 'Submit Task Order'
sticky_header_text: 'Add a Task Order'
sticky_header_review_text: Review Changes
sticky_header_context: 'Step {step} of 5'
@ -525,6 +552,10 @@ task_orders:
text: I acknowledge, by executing the confirmation above and submitting this verification, that I am subject to potential penalties that may include fines, imprisonment, or both, under the U.S. law and regulations for any false statement or misrepresentation in association with this Task Order submission or on any accompanying documentation.
status_empty_state: 'This Portfolio has no {status} Task Orders.'
status_list_title: '{status} Task Orders'
summary:
obligated: Total Obligated
total: Total Value
expended: Total Expended
JEDICLINType:
JEDI_CLIN_1: 'IDIQ CLIN 0001 Unclassified IaaS/PaaS'
JEDI_CLIN_2: 'IDIQ CLIN 0002 Classified IaaS/PaaS'