Update TO section for Oversight
This commit is contained in:
parent
922ec56134
commit
74ab102891
@ -8,11 +8,11 @@ from wtforms.fields import (
|
|||||||
TextAreaField,
|
TextAreaField,
|
||||||
FileField,
|
FileField,
|
||||||
)
|
)
|
||||||
from wtforms.fields.html5 import DateField
|
from wtforms.fields.html5 import DateField, TelField
|
||||||
from wtforms.widgets import ListWidget, CheckboxInput
|
from wtforms.widgets import ListWidget, CheckboxInput
|
||||||
from wtforms.validators import Required, Length
|
from wtforms.validators import Required, Length
|
||||||
|
|
||||||
from atst.forms.validators import IsNumber
|
from atst.forms.validators import IsNumber, PhoneNumber
|
||||||
|
|
||||||
from .forms import CacheableForm
|
from .forms import CacheableForm
|
||||||
from .data import (
|
from .data import (
|
||||||
@ -98,7 +98,7 @@ class FundingForm(CacheableForm):
|
|||||||
|
|
||||||
class UnclassifiedFundingForm(FundingForm):
|
class UnclassifiedFundingForm(FundingForm):
|
||||||
clin_02 = IntegerField(translate("forms.task_order.unclassified_clin_02_label"))
|
clin_02 = IntegerField(translate("forms.task_order.unclassified_clin_02_label"))
|
||||||
clin_04 = IntegerField(translate("forms.task_order.unclassified_clin_04_label")
|
clin_04 = IntegerField(translate("forms.task_order.unclassified_clin_04_label"))
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
@ -107,52 +107,56 @@ class UnclassifiedFundingForm(FundingForm):
|
|||||||
|
|
||||||
|
|
||||||
class OversightForm(CacheableForm):
|
class OversightForm(CacheableForm):
|
||||||
ko_first_name = StringField("First Name")
|
ko_first_name = StringField(
|
||||||
ko_last_name = StringField("Last Name")
|
translate("forms.task_order.oversight_first_name_label")
|
||||||
ko_email = StringField("Email")
|
)
|
||||||
|
ko_last_name = StringField(translate("forms.task_order.oversight_last_name_label"))
|
||||||
|
ko_email = StringField(translate("forms.task_order.oversight_email_label"))
|
||||||
|
ko_phone = TelField(
|
||||||
|
translate("forms.task_order.oversight_phone_label"), validators=[PhoneNumber()]
|
||||||
|
)
|
||||||
ko_dod_id = StringField(
|
ko_dod_id = StringField(
|
||||||
"DOD ID", validators=[Required(), Length(min=10), IsNumber()]
|
translate("forms.task_order.oversight_dod_id_label"),
|
||||||
|
validators=[Required(), Length(min=10), IsNumber()],
|
||||||
)
|
)
|
||||||
|
|
||||||
cor_first_name = StringField("First Name")
|
cor_first_name = StringField(
|
||||||
cor_last_name = StringField("Last Name")
|
translate("forms.task_order.oversight_first_name_label")
|
||||||
cor_email = StringField("Email")
|
)
|
||||||
|
cor_last_name = StringField(translate("forms.task_order.oversight_last_name_label"))
|
||||||
|
cor_email = StringField(translate("forms.task_order.oversight_email_label"))
|
||||||
|
cor_phone = TelField(
|
||||||
|
translate("forms.task_order.oversight_phone_label"), validators=[PhoneNumber()]
|
||||||
|
)
|
||||||
cor_dod_id = StringField(
|
cor_dod_id = StringField(
|
||||||
"DOD ID", validators=[Required(), Length(min=10), IsNumber()]
|
translate("forms.task_order.oversight_dod_id_label"),
|
||||||
|
validators=[Required(), Length(min=10), IsNumber()],
|
||||||
)
|
)
|
||||||
|
|
||||||
so_first_name = StringField("First Name")
|
so_first_name = StringField(
|
||||||
so_last_name = StringField("Last Name")
|
translate("forms.task_order.oversight_first_name_label")
|
||||||
so_email = StringField("Email")
|
)
|
||||||
|
so_last_name = StringField(translate("forms.task_order.oversight_last_name_label"))
|
||||||
|
so_email = StringField(translate("forms.task_order.oversight_email_label"))
|
||||||
|
so_phone = TelField(
|
||||||
|
translate("forms.task_order.oversight_phone_label"), validators=[PhoneNumber()]
|
||||||
|
)
|
||||||
so_dod_id = StringField(
|
so_dod_id = StringField(
|
||||||
"DOD ID", validators=[Required(), Length(min=10), IsNumber()]
|
translate("forms.task_order.oversight_dod_id_label"),
|
||||||
|
validators=[Required(), Length(min=10), IsNumber()],
|
||||||
)
|
)
|
||||||
|
|
||||||
ko_invite = BooleanField(
|
ko_invite = BooleanField(
|
||||||
"Invite KO to Task Order Builder",
|
translate("forms.task_order.ko_invite_label"),
|
||||||
description="""
|
description=translate("forms.task_order.skip_invite_description"),
|
||||||
Your KO will need to approve funding for this Task Order by logging
|
|
||||||
into the JEDI Cloud Portal, submitting the Task Order documents
|
|
||||||
within their official system of record, and electronically signing.
|
|
||||||
<i>You may choose to skip this for now and invite them later.</i>
|
|
||||||
""",
|
|
||||||
)
|
)
|
||||||
cor_invite = BooleanField(
|
cor_invite = BooleanField(
|
||||||
"Invite COR to Task Order Builder",
|
translate("forms.task_order.cor_invite_label"),
|
||||||
description="""
|
description=translate("forms.task_order.skip_invite_description"),
|
||||||
Your COR may assist with submitting the Task Order documents within
|
|
||||||
their official system of record. <i>You may choose to skip this for
|
|
||||||
now and invite them later.</i>
|
|
||||||
""",
|
|
||||||
)
|
)
|
||||||
so_invite = BooleanField(
|
so_invite = BooleanField(
|
||||||
"Invite Security Officer to Task Order Builder",
|
translate("forms.task_order.so_invite_label"),
|
||||||
description="""
|
description=translate("forms.task_order.skip_invite_description"),
|
||||||
Your Security Officer will need to answer some security
|
|
||||||
configuration questions in order to generate a DD-254 document,
|
|
||||||
then electronically sign. <i>You may choose to skip this for now
|
|
||||||
and invite them later.</i>
|
|
||||||
""",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
label=field.label | striptags,
|
label=field.label | striptags,
|
||||||
description=field.description,
|
description=field.description,
|
||||||
tooltip='',
|
tooltip='',
|
||||||
|
tooltip_title='Help',
|
||||||
placeholder='',
|
placeholder='',
|
||||||
validation='anything',
|
validation='anything',
|
||||||
paragraph=False,
|
paragraph=False,
|
||||||
@ -30,7 +31,7 @@
|
|||||||
<label for={{field.name}}>
|
<label for={{field.name}}>
|
||||||
<div class="usa-input__title">
|
<div class="usa-input__title">
|
||||||
{{ label }}
|
{{ label }}
|
||||||
{% if tooltip %}{{ Tooltip(tooltip) }}{% endif %}
|
{% if tooltip %}{{ Tooltip(tooltip, tooltip_title) }}{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if field.description %}
|
{% if field.description %}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{% from "components/text_input.html" import TextInput %}
|
{% from "components/text_input.html" import TextInput %}
|
||||||
|
|
||||||
{% macro UserInfo(first_name, last_name, email, dod_id) -%}
|
{% macro UserInfo(first_name, last_name, email, phone) -%}
|
||||||
<div class='form-row'>
|
<div class='form-row'>
|
||||||
<div class='form-col form-col--half'>
|
<div class='form-col form-col--half'>
|
||||||
{{ TextInput(first_name) }}
|
{{ TextInput(first_name) }}
|
||||||
@ -17,7 +17,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class='form-col form-col--half'>
|
<div class='form-col form-col--half'>
|
||||||
{{ TextInput(dod_id, placeholder='1234567890', validation='dodId') }}
|
{{ TextInput(phone, placeholder='(123) 456-7890', validation='usPhone') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
@ -2,24 +2,51 @@
|
|||||||
|
|
||||||
{% from "components/user_info.html" import UserInfo %}
|
{% from "components/user_info.html" import UserInfo %}
|
||||||
{% from "components/checkbox_input.html" import CheckboxInput %}
|
{% from "components/checkbox_input.html" import CheckboxInput %}
|
||||||
|
{% from "components/text_input.html" import TextInput %}
|
||||||
|
|
||||||
{% block heading %}
|
{% block heading %}
|
||||||
Oversight
|
{{ "task_orders.new.oversight.section_title" | translate }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block form %}
|
{% block form %}
|
||||||
|
|
||||||
<!-- Oversight Section -->
|
<!-- Oversight Section -->
|
||||||
<h3>Contracting Officer (KO) Information</h3>
|
<h3>{{ "task_orders.new.oversight.ko_info_title" | translate }}</h3>
|
||||||
{{ UserInfo(form.ko_first_name, form.ko_last_name, form.ko_email, form.ko_dod_id) }}
|
<p>{{ "task_orders.new.oversight.ko_info_paragraph" | translate }}</p>
|
||||||
|
<div class='usa-input'>
|
||||||
|
<fieldset class="usa-input__choices">
|
||||||
|
<legend>
|
||||||
|
<input type="checkbox" name="skip_ko" id="skip_ko" value="y" />
|
||||||
|
<label for="skip_ko">{{ "task_orders.new.oversight.skip_ko_label" | translate }}</label>
|
||||||
|
</legend>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
{{ UserInfo(form.ko_first_name, form.ko_last_name, form.ko_email, form.ko_phone) }}
|
||||||
{{ CheckboxInput(form.ko_invite) }}
|
{{ CheckboxInput(form.ko_invite) }}
|
||||||
|
{{ TextInput(form.ko_dod_id, placeholder="1234567890", tooltip="Why", tooltip_title='Why')}}
|
||||||
|
|
||||||
<h3>Contractive Officer Representative (COR) Information</h3>
|
<hr />
|
||||||
{{ UserInfo(form.cor_first_name, form.cor_last_name, form.cor_email, form.cor_dod_id) }}
|
|
||||||
|
<h3>{{ "task_orders.new.oversight.cor_info_title" | translate }}</h3>
|
||||||
|
<p>{{ "task_orders.new.oversight.cor_info_paragraph" | translate }}</p>
|
||||||
|
<div class='usa-input'>
|
||||||
|
<fieldset class="usa-input__choices">
|
||||||
|
<legend>
|
||||||
|
<input type="checkbox" name="am_cor" id="am_cor" value="y" />
|
||||||
|
<label for="am_cor">{{ "task_orders.new.oversight.am_cor_label" | translate }}</label>
|
||||||
|
</legend>
|
||||||
|
</fieldset>
|
||||||
|
</div>
|
||||||
|
{{ UserInfo(form.cor_first_name, form.cor_last_name, form.cor_email, form.cor_phone) }}
|
||||||
{{ CheckboxInput(form.cor_invite) }}
|
{{ CheckboxInput(form.cor_invite) }}
|
||||||
|
{{ TextInput(form.cor_dod_id, placeholder="1234567890", tooltip="Why", tooltip_title='Why')}}
|
||||||
|
|
||||||
<h3>Security Officer Information</h3>
|
<hr />
|
||||||
{{ UserInfo(form.so_first_name, form.so_last_name, form.so_email, form.so_dod_id) }}
|
|
||||||
|
<h3>{{ "task_orders.new.oversight.so_info_title" | translate }}</h3>
|
||||||
|
<p>{{ "task_orders.new.oversight.so_info_paragraph" | translate }}</p>
|
||||||
|
{{ UserInfo(form.so_first_name, form.so_last_name, form.so_email, form.so_phone) }}
|
||||||
{{ CheckboxInput(form.so_invite) }}
|
{{ CheckboxInput(form.so_invite) }}
|
||||||
|
{{ TextInput(form.so_dod_id, placeholder="1234567890", tooltip="Why", tooltip_title='Why')}}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -186,12 +186,22 @@ forms:
|
|||||||
end_date_label: End Date
|
end_date_label: End Date
|
||||||
csp_cost_est_label: Upload a copy of your CSP Cost Estimate Research
|
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.
|
csp_cost_est_description: Upload a PDF or screenshot fo your usage estimate from the calculator.
|
||||||
clin_01_label: 'CLIN 01 : Unclassifie'd
|
clin_01_label: 'CLIN 01 : Unclassified'
|
||||||
clin_02_label: 'CLIN 02: Classified'
|
clin_02_label: 'CLIN 02: Classified'
|
||||||
clin_03_label: 'CLIN 03: Unclassified'
|
clin_03_label: 'CLIN 03: Unclassified'
|
||||||
clin_04_label: 'CLIN 04: Classified'
|
clin_04_label: 'CLIN 04: Classified'
|
||||||
unclassified_clin_02_label: 'CLIN 02: Classified (available soon)'
|
unclassified_clin_02_label: 'CLIN 02: Classified (available soon)'
|
||||||
unclassified_clin_04_label: 'CLIN 04: Classified (available soon)'
|
unclassified_clin_04_label: 'CLIN 04: Classified (available soon)'
|
||||||
|
oversight_first_name_label: First Name
|
||||||
|
oversight_last_name_label: Last Name
|
||||||
|
oversight_email_label: Email
|
||||||
|
oversight_phone_label: Phone Number
|
||||||
|
oversight_dod_id_label: DoD ID
|
||||||
|
ko_invite_label: Invite KO to Task Order Builder
|
||||||
|
cor_invite_label: Invite COR to Task Order Builder
|
||||||
|
so_invite_label: Invite Security Officer to Task Order Builder
|
||||||
|
skip_invite_description: |
|
||||||
|
<i>You may choose to skip this for now and invite them later.</i>
|
||||||
validators:
|
validators:
|
||||||
is_number_message: Please enter a valid number.
|
is_number_message: Please enter a valid number.
|
||||||
list_item_required_message: Please provide at least one.
|
list_item_required_message: Please provide at least one.
|
||||||
@ -363,6 +373,16 @@ task_orders:
|
|||||||
support_assistance_title: Cloud Support and Assistance
|
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.
|
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:'
|
total: 'Total Task Order Value:'
|
||||||
|
oversight:
|
||||||
|
section_title: Oversight
|
||||||
|
ko_info_title: Contracting Officer (KO) Information
|
||||||
|
ko_info_paragraph: Your KO will need to approve funding for this Task Order by loggin into the JEDI Cloud Portal, submitting the Task Order documents within their official system of record, and electronically signing. You might want to work with your program Financial Manager to get your TO documents moving in the right dirction.
|
||||||
|
skip_ko_label: "Skip for now (We'll remind you to enter one later)"
|
||||||
|
cor_info_title: Contractive Officer Representative (COR) Information
|
||||||
|
cor_info_paragraph: Your COR may assist in submitting the Task Order documents within thier official system of record. They may also be invited to log in an manage the Task Order entry within the JEDI Cloud portal.
|
||||||
|
am_cor_label: I am the Contracting Officer Representative (COR) for this Task Order
|
||||||
|
so_info_title: Security Officer Information
|
||||||
|
so_info_paragraph: our Security Officer will need to answer some security configuration questions in order to generate a DD-254 document, then electronically sign.
|
||||||
testing:
|
testing:
|
||||||
example_string: Hello World
|
example_string: Hello World
|
||||||
example_with_variables: 'Hello, {name}!'
|
example_with_variables: 'Hello, {name}!'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user