diff --git a/atst/forms/officers.py b/atst/forms/officers.py index 1bbb14e3..b0b0e61d 100644 --- a/atst/forms/officers.py +++ b/atst/forms/officers.py @@ -1,5 +1,5 @@ from flask_wtf import FlaskForm -from wtforms.fields import StringField +from wtforms.fields import StringField, BooleanField from wtforms.fields.html5 import TelField from wtforms.validators import Email, Length, Optional @@ -15,6 +15,7 @@ class OfficerForm(FlaskForm): email = StringField("Email", validators=[Optional(), Email()]) phone_number = TelField("Phone Number", validators=[PhoneNumber()]) dod_id = StringField("DoD ID", validators=[Optional(), Length(min=10), IsNumber()]) + invite = BooleanField("Invite to Task Order Builder") class EditTaskOrderOfficersForm(CacheableForm): diff --git a/styles/sections/_task_order.scss b/styles/sections/_task_order.scss index c9bb769b..adf7ad6d 100644 --- a/styles/sections/_task_order.scss +++ b/styles/sections/_task_order.scss @@ -361,6 +361,48 @@ } .officer__form { + padding: 1.5rem; + background-color: $color-aqua-lightest; + border-left-color: $color-blue; + border-left-style: solid; + border-left-width: $gap / 2; + margin-top: 1.5rem; + + .edit-officer { + margin-bottom: $gap * 2; + + h4 { + color: $color-gray; + margin-top: 0; + } + + p { + font-size: 1.5rem; + } + } + + .usa-input__title { + font-weight: normal; + } + + .form-row { + margin-bottom: 0rem; + margin-top: 0rem; + margin-right: 2rem; + + .usa-input { + margin-bottom: 1.5rem; + } + + &.officer__form--dodId { + margin-top: 1.5rem; + + .usa-input { + margin-bottom: 0rem; + } + } + } + .officer__form--actions { display: flex; flex-direction: row; diff --git a/templates/components/checkbox_input.html b/templates/components/checkbox_input.html index 9fe38075..613cf337 100644 --- a/templates/components/checkbox_input.html +++ b/templates/components/checkbox_input.html @@ -1,11 +1,17 @@ -{% macro CheckboxInput(field, inline=False, classes="") -%} +{% macro CheckboxInput( + field, + label=field.label | striptags, + inline=False, + classes="") -%}
{{ field() }} - {{ field.label }} + {% if field.description %} {{ field.description | safe }} diff --git a/templates/portfolios/task_orders/invitations.html b/templates/portfolios/task_orders/invitations.html index 14a3d389..e79951b7 100644 --- a/templates/portfolios/task_orders/invitations.html +++ b/templates/portfolios/task_orders/invitations.html @@ -13,44 +13,52 @@ {% endmacro %} -{% macro EditOfficerInfo(form, officer_type) -%} -
+{% macro EditOfficerInfo(form, officer_type, invited) -%} -
{% endmacro %} {% macro OfficerInfo(task_order, officer_type, form) %} @@ -67,8 +75,11 @@ {% set email = task_order[prefix + "_email"] %} {% set phone_number = task_order[prefix + "_phone_number"] %} {% set dod_id = task_order[prefix + "_dod_id"] %} + {% set invited = False %} + {% if task_order[officer_type] %} + {% set invited = True %}
{{ first_name }} {{ last_name }}
@@ -101,7 +112,7 @@
{{ Link("Update", "edit", onClick="edit") }} {{ Link("Remove", "trash", classes="remove") }} -
@@ -113,13 +124,13 @@
-
{% endif %} - {{ EditOfficerInfo(form, officer_type) }} + {{ EditOfficerInfo(form, officer_type, invited) }}
diff --git a/translations.yaml b/translations.yaml index 7a0f95d0..b78ea094 100644 --- a/translations.yaml +++ b/translations.yaml @@ -254,6 +254,10 @@ forms: portfolio: name_label: Portfolio Name name_length_validation_message: Portfolio names must be at least 4 and not more than 100 characters + officers: + contracting_officer_invite: Invite KO to Task Order Builder + contracting_officer_representative_invite: Invite COR to Task Order Builder + security_officer_invite: Invite SO to Task Order Builder fragments: edit_application_form: explain: 'AT-AT allows you to create multiple applications within a portfolio. Each application can then be broken down into its own customizable environments.' @@ -461,21 +465,25 @@ task_orders: pending_to: Pending TO Completion invitations: dod_id_label: DoD ID + edit_text: A new invitation e-mail will be sent when new information is saved. contracting_officer: title: Contracting Officer (KO) Information description: You'll need a signature from your KO. You might want to work with your program Financial Manager to get your TO documents moving in the right direction. add_button_text: Add / Invite KO invite_button_text: Invite KO + edit_title: Edit KO contracting_officer_representative: title: Contracting Officer Representative (COR) Information description: Your COR may assist in submitting the Task Order documents within their official system of record. add_button_text: Add / Invite COR invite_button_text: Invite COR + edit_title: Edit COR security_officer: title: IA Security Officer Information description: Your Security Officer will need to answer some security configuration questions in order to generate a DD-254 document, then digitally sign. add_button_text: Add / Invite Security Officer invite_button_text: Invite Security Officer + edit_title: Edit SO ko_review: alert_title: Verify Your Info title: Task Order Builder