From 6bc157b2b34297766a7e94d10f9355472d3249da Mon Sep 17 00:00:00 2001 From: leigh-mil Date: Mon, 29 Oct 2018 14:01:16 -0400 Subject: [PATCH] Add phone ext --- .../4c0b8263d800_add_phone_extension.py | 32 +++++++++++++++++++ atst/domain/users.py | 1 + atst/forms/ccpo_review.py | 1 + atst/forms/edit_user.py | 2 ++ atst/forms/new_request.py | 1 + atst/models/request.py | 1 + atst/models/request_review.py | 1 + atst/models/request_revision.py | 1 + atst/models/user.py | 1 + atst/routes/requests/jedi_request_flow.py | 1 + styles/components/_forms.scss | 4 +++ templates/fragments/edit_user_form.html | 5 ++- templates/requests/_review.html | 15 ++++++++- templates/requests/approval.html | 13 ++++++-- templates/requests/screen-2.html | 7 +++- tests/factories.py | 1 + 16 files changed, 82 insertions(+), 5 deletions(-) create mode 100644 alembic/versions/4c0b8263d800_add_phone_extension.py diff --git a/alembic/versions/4c0b8263d800_add_phone_extension.py b/alembic/versions/4c0b8263d800_add_phone_extension.py new file mode 100644 index 00000000..39c646e2 --- /dev/null +++ b/alembic/versions/4c0b8263d800_add_phone_extension.py @@ -0,0 +1,32 @@ +"""Add Phone Extension + +Revision ID: 4c0b8263d800 +Revises: 9c24c609878a +Create Date: 2018-10-29 11:14:01.332665 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '4c0b8263d800' +down_revision = '9c24c609878a' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('request_reviews', sa.Column('phone_ext_mao', sa.String(), nullable=True)) + op.add_column('request_revisions', sa.Column('phone_ext', sa.String(), nullable=True)) + op.add_column('users', sa.Column('phone_ext', sa.String(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('users', 'phone_ext') + op.drop_column('request_revisions', 'phone_ext') + op.drop_column('request_reviews', 'phone_ext_mao') + # ### end Alembic commands ### diff --git a/atst/domain/users.py b/atst/domain/users.py index 97947080..5742017a 100644 --- a/atst/domain/users.py +++ b/atst/domain/users.py @@ -69,6 +69,7 @@ class Users(object): "last_name", "email", "phone_number", + "phone_ext", "service_branch", "citizenship", "designation", diff --git a/atst/forms/ccpo_review.py b/atst/forms/ccpo_review.py index c8a4919d..b2413a3e 100644 --- a/atst/forms/ccpo_review.py +++ b/atst/forms/ccpo_review.py @@ -19,5 +19,6 @@ class CCPOReviewForm(ValidatedForm): phone_mao = TelField( "Mission Owner phone number (optional)", validators=[Optional(), PhoneNumber()] ) + phone_ext_mao = StringField("Extension (optional)") fname_ccpo = StringField("First Name (optional)", validators=[Optional(), Name()]) lname_ccpo = StringField("Last Name (optional)", validators=[Optional(), Name()]) diff --git a/atst/forms/edit_user.py b/atst/forms/edit_user.py index 3c337e0b..66ecf23b 100644 --- a/atst/forms/edit_user.py +++ b/atst/forms/edit_user.py @@ -25,6 +25,7 @@ USER_FIELDS = { description="Enter your 10-digit U.S. phone number", validators=[PhoneNumber()], ), + "phone_ext": StringField("Extension"), "service_branch": SelectField( "Service Branch or Agency", description="Which service or organization do you belong to within the DoD?", @@ -86,6 +87,7 @@ class EditUserForm(ValidatedForm): last_name = inherit_user_field("last_name") email = inherit_user_field("email") phone_number = inherit_user_field("phone_number") + phone_ext = inherit_user_field("phone_ext") service_branch = inherit_user_field("service_branch") citizenship = inherit_user_field("citizenship") designation = inherit_user_field("designation") diff --git a/atst/forms/new_request.py b/atst/forms/new_request.py index 554668c9..4b564c37 100644 --- a/atst/forms/new_request.py +++ b/atst/forms/new_request.py @@ -167,6 +167,7 @@ class InformationAboutYouForm(ValidatedForm): lname_request = inherit_field(USER_FIELDS["last_name"]) email_request = inherit_field(USER_FIELDS["email"]) phone_number = inherit_field(USER_FIELDS["phone_number"]) + phone_ext = inherit_field(USER_FIELDS["phone_ext"], required=False) service_branch = inherit_field(USER_FIELDS["service_branch"]) citizenship = inherit_field(USER_FIELDS["citizenship"]) designation = inherit_field(USER_FIELDS["designation"]) diff --git a/atst/models/request.py b/atst/models/request.py index 4d518274..101c1969 100644 --- a/atst/models/request.py +++ b/atst/models/request.py @@ -81,6 +81,7 @@ class Request(Base, mixins.TimestampsMixin, mixins.AuditableMixin): "citizenship", "designation", "phone_number", + "phone_ext", "email_request", "fname_request", "lname_request", diff --git a/atst/models/request_review.py b/atst/models/request_review.py index 4354aae6..f45fdfb7 100644 --- a/atst/models/request_review.py +++ b/atst/models/request_review.py @@ -18,6 +18,7 @@ class RequestReview(Base, mixins.TimestampsMixin, mixins.AuditableMixin): lname_mao = Column(String) email_mao = Column(String) phone_mao = Column(String) + phone_ext_mao = Column(String) fname_ccpo = Column(String) lname_ccpo = Column(String) diff --git a/atst/models/request_revision.py b/atst/models/request_revision.py index 1d2da465..89c4987a 100644 --- a/atst/models/request_revision.py +++ b/atst/models/request_revision.py @@ -57,6 +57,7 @@ class RequestRevision(Base, mixins.TimestampsMixin, mixins.AuditableMixin): citizenship = Column(String) designation = Column(String) phone_number = Column(String) + phone_ext = Column(String) email_request = Column(String) fname_request = Column(String) lname_request = Column(String) diff --git a/atst/models/user.py b/atst/models/user.py index 14d8480f..aed21662 100644 --- a/atst/models/user.py +++ b/atst/models/user.py @@ -21,6 +21,7 @@ class User(Base, mixins.TimestampsMixin, mixins.AuditableMixin): first_name = Column(String) last_name = Column(String) phone_number = Column(String) + phone_ext = Column(String) service_branch = Column(String) citizenship = Column(String) designation = Column(String) diff --git a/atst/routes/requests/jedi_request_flow.py b/atst/routes/requests/jedi_request_flow.py index a47c110e..4a71824a 100644 --- a/atst/routes/requests/jedi_request_flow.py +++ b/atst/routes/requests/jedi_request_flow.py @@ -64,6 +64,7 @@ class JEDIRequestFlow(object): "lname_request": user.last_name, "email_request": user.email, "phone_number": user.phone_number, + "phone_ext": user.phone_ext, "service_branch": user.service_branch, "designation": user.designation, "citizenship": user.citizenship, diff --git a/styles/components/_forms.scss b/styles/components/_forms.scss index 5ebf01f4..4b4eb9cc 100644 --- a/styles/components/_forms.scss +++ b/styles/components/_forms.scss @@ -42,6 +42,10 @@ flex-basis: 66.66%; } + &.form-col--sixth { + flex-basis: 16.66%; + } + .usa-input { margin-left: ($gap * 4); margin-right: ($gap * 4); diff --git a/templates/fragments/edit_user_form.html b/templates/fragments/edit_user_form.html index 1e7f3fe2..66a28037 100644 --- a/templates/fragments/edit_user_form.html +++ b/templates/fragments/edit_user_form.html @@ -21,9 +21,12 @@ {{ TextInput(form.email, validation='email') }} -
+
{{ TextInput(form.phone_number, validation='usPhone') }}
+
+ {{ TextInput(form.phone_ext)}} +
{{ OptionsInput(form.service_branch) }} diff --git a/templates/requests/_review.html b/templates/requests/_review.html index e649b7a7..f006dec2 100644 --- a/templates/requests/_review.html +++ b/templates/requests/_review.html @@ -102,7 +102,20 @@ {{ DefinitionReviewField("Email Address", "information_about_you", "email_request") }} - {{ DefinitionReviewField("Phone Number", "information_about_you", "phone_number", filter="usPhone") }} +
+
Phone Number
+
+ {% if data.information_about_you.phone_number is not none %} + {{ data.information_about_you.phone_number }} + {% else %} + {{ RequiredLabel() }} + {% endif %} + + {% if data.information_about_you.phone_ext %} + ext. {{ data.information_about_you.phone_ext }} + {% endif %} +
+
{{ DefinitionReviewField("Service Branch or Agency", "information_about_you", "service_branch", filter="getOptionLabel", filter_args=[service_branches]) }} diff --git a/templates/requests/approval.html b/templates/requests/approval.html index 53583e97..b6558081 100644 --- a/templates/requests/approval.html +++ b/templates/requests/approval.html @@ -112,7 +112,12 @@

Mission Owner approval on behalf of:

{{ review.full_name_mao }} {{ review.email_mao }} - {{ review.phone_mao }} + + {{ review.phone_mao }} + {% if review.phone_ext_mao %} + ext. {{ review.phone_ext_mao }} + {% endif %} + {% endif %} @@ -202,9 +207,13 @@ {{ TextInput(review_form.email_mao, placeholder="name@mail.mil", validation='email') }} -
+
{{ TextInput(review_form.phone_mao, placeholder="(123) 456-7890", validation='usPhone') }}
+ +
+ {{ TextInput(review_form.phone_ext_mao)}} +

diff --git a/templates/requests/screen-2.html b/templates/requests/screen-2.html index 2994ecd3..c83f9523 100644 --- a/templates/requests/screen-2.html +++ b/templates/requests/screen-2.html @@ -27,7 +27,12 @@
{{ TextInput(f.email_request, placeholder='e.g. jane@mail.mil', validation='email') }}
-
{{ TextInput(f.phone_number, placeholder='e.g. (123) 456-7890', validation='usPhone') }}
+
+ {{ TextInput(f.phone_number, placeholder='e.g. (123) 456-7890', validation='usPhone') }} +
+
+ {{ TextInput(f.phone_ext)}} +

We want to collect the following information from you for security auditing and determining priviledged user access.

diff --git a/tests/factories.py b/tests/factories.py index f790579b..3e9da0dc 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -163,6 +163,7 @@ class RequestFactory(Base): citizenship="United States", designation="military", phone_number="1234567890", + phone_ext="123", email_request=user.email, fname_request=user.first_name, lname_request=user.last_name,