Merge pull request #351 from dod-ccpo/demo-fixes

Miscellaneous fixes
This commit is contained in:
patricksmithdds
2018-09-28 10:00:36 -04:00
committed by GitHub
13 changed files with 41 additions and 70 deletions

View File

@@ -35,7 +35,7 @@ def render_approval(request, form=None, internal_comment_form=None):
"requests/approval.html", "requests/approval.html",
data=data, data=data,
reviews=list(reversed(request.reviews)), reviews=list(reversed(request.reviews)),
request=request, jedi_request=request,
current_status=request.status.value, current_status=request.status.value,
review_form=form or CCPOReviewForm(), review_form=form or CCPOReviewForm(),
internal_comment_form=internal_comment_form, internal_comment_form=internal_comment_form,

View File

@@ -71,9 +71,7 @@ def update_financial_verification(request_id):
) )
else: else:
return redirect( return redirect(
url_for( url_for("requests.requests_index", modal="pendingCCPOApproval")
"requests.requests_index", modal="pendingFinancialVerification"
)
) )
else: else:

View File

@@ -121,7 +121,7 @@ def requests_submit(request_id=None):
if request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION: if request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION:
modal = "pendingFinancialVerification" modal = "pendingFinancialVerification"
else: else:
modal = "pendingCCPOApproval" modal = "pendingCCPOAcceptance"
return redirect(url_for("requests.requests_index", modal=modal)) return redirect(url_for("requests.requests_index", modal=modal))
@@ -141,6 +141,6 @@ def view_request_details(request_id=None):
return render_template( return render_template(
"requests/details.html", "requests/details.html",
data=data, data=data,
request=request, jedi_request=request,
requires_fv_action=requires_fv_action, requires_fv_action=requires_fv_action,
) )

View File

@@ -9,10 +9,14 @@ export default {
LocalDatetime LocalDatetime
}, },
props: {
initialState: String
},
data: function () { data: function () {
return { return {
approving: false, approving: this.initialState === 'approving',
denying: false denying: this.initialState === 'denying'
} }
}, },

View File

@@ -18,7 +18,10 @@ export default {
type: String, type: String,
default: () => '' default: () => ''
}, },
initialErrors: Array, initialErrors: {
type: Array,
default: () => []
},
paragraph: String, paragraph: String,
noMaxWidth: String noMaxWidth: String
}, },
@@ -30,7 +33,7 @@ export default {
mask: inputValidations[this.validation].mask, mask: inputValidations[this.validation].mask,
pipe: inputValidations[this.validation].pipe || undefined, pipe: inputValidations[this.validation].pipe || undefined,
keepCharPositions: inputValidations[this.validation].keepCharPositions || false, keepCharPositions: inputValidations[this.validation].keepCharPositions || false,
validationError: inputValidations[this.validation].validationError || '', validationError: this.initialErrors.join(' ') || inputValidations[this.validation].validationError,
value: this.initialValue, value: this.initialValue,
modified: false modified: false
} }
@@ -82,6 +85,10 @@ export default {
valid = false valid = false
} }
if (this.modified) {
this.validationError = inputValidations[this.validation].validationError
}
// Show error messages or not // Show error messages or not
if (valid) { if (valid) {
this.showError = false this.showError = false

View File

@@ -29,7 +29,7 @@ export default {
}, },
email: { email: {
mask: emailMask, mask: emailMask,
match: /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/, match: /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/i,
unmask: [], unmask: [],
validationError: 'Please enter a valid e-mail address' validationError: 'Please enter a valid e-mail address'
}, },

View File

@@ -1,11 +1,11 @@
{% from "components/icon.html" import Icon %} {% from "components/icon.html" import Icon %}
<p> <p>
We will review and respond to your request in 3 business days. Youll be notified via email or phone. The CCPO will review and respond to your request in 3 business days. Youll be notified via email or phone. Please note if your request is for over $1M of JEDI cloud resources it will require a manual review by the CCPO.
</p> </p>
<p> <p>
While your request is being reviewed, your next step is to create a Task Order associated with JEDI Cloud. Please contact a Contracting Officer (KO), Contracting Officer Representative (COR), or a Financial Manager to help with this step. While your request is being reviewed, your next step is to create a Task Order (TO) associated with the JEDI Cloud. Please contact a Contracting Officer (KO), Contracting Officer Representative (COR), or a Financial Manager to help with this step.
</p> </p>
<div class='alert__actions'> <div class='alert__actions'>

View File

@@ -1,40 +1,8 @@
{% from "components/icon.html" import Icon %}
<h1>
Request submitted. Approval pending.
</h1>
<p> <p>
We will review and respond to your request in 3 business days. Youll be notified via email or phone. The CCPO will review and respond to your Financial Verification submission in 3 business days. You will be notified via email or phone.
</p> </p>
<p>
Your request is being reviewed because:
<ul>
<li>
Your request includes over $1 million for cloud resources
</li>
<li>
We may need more information about your request
</li>
</ul>
</p>
<h2>
Next Steps
</h2>
<p> <p>
While your request is being reviewed, your next step is to create a Task Order associated with JEDI Cloud. Please contact a Contracting Officer (KO), Contracting Officer Representative (COR), or a Financial Manager to help with this step. Once the financial verification is approved you will be invited to create your JEDI Workspace and set-up your projects. Click here for more details.
</p> </p>
<p>
Once the Task Order has been created, you will be asked to provide details about the task order in the Financial Verification step.
</p>
<div class='alert__actions'>
<a href='/help' class='icon-link'>
{{ Icon('help') }}
Learn more about the JEDI Cloud Task Order and the Financial Verification process.
</a>
</div>

View File

@@ -134,7 +134,7 @@
{{ DefinitionReviewField("DoD ID", "primary_poc", "dodid_poc") }} {{ DefinitionReviewField("DoD ID", "primary_poc", "dodid_poc") }}
</dl> </dl>
{% if request.has_financial_data %} {% if jedi_request.has_financial_data %}
<hr> <hr>
<h2> <h2>
Financial Verification Financial Verification

View File

@@ -17,14 +17,14 @@
<section class='panel'> <section class='panel'>
<header class='panel__heading panel__heading--divider request-approval__heading'> <header class='panel__heading panel__heading--divider request-approval__heading'>
<h1 class='h2'>Request: {{ request.displayname }} <h1 class='h2'>Request: {{ jedi_request.displayname }}
</h1> </h1>
<span class='label label--info'>{{ current_status }}</span> <span class='label label--info'>{{ current_status }}</span>
</header> </header>
<div class='panel__content'> <div class='panel__content'>
{% with data=data, request_id=request.id %} {% with data=data, request_id=jedi_request.id %}
{% include "requests/_review.html" %} {% include "requests/_review.html" %}
{% endwith %} {% endwith %}
@@ -33,7 +33,7 @@
</section> </section>
<section class='internal-notes' id='ccpo-notes'> <section class='internal-notes' id='ccpo-notes'>
<form method="POST" action="{{ url_for('requests.create_internal_comment', request_id=request.id) }}"> <form method="POST" action="{{ url_for('requests.create_internal_comment', request_id=jedi_request.id) }}">
<div class='panel'> <div class='panel'>
<div class='panel__heading panel__heading--divider'> <div class='panel__heading panel__heading--divider'>
<h2>CCPO Internal Comments</h2> <h2>CCPO Internal Comments</h2>
@@ -82,10 +82,11 @@
<section class='request-approval__review'> <section class='request-approval__review'>
<form method="POST" action="{{ url_for("requests.submit_approval", request_id=request.id) }}" autocomplete="off"> <form method="POST" action="{{ url_for("requests.submit_approval", request_id=jedi_request.id) }}" autocomplete="off">
{{ review_form.csrf_token }} {{ review_form.csrf_token }}
<ccpo-approval inline-template> {% set initialState = 'approving' if review_form.errors else '' %}
<ccpo-approval inline-template initial-state="{{ initialState }}">
<div> <div>
<div class='panel'> <div class='panel'>
@@ -139,7 +140,7 @@
{% endif %} {% endif %}
</div> </div>
{% if request.is_pending_ccpo_action %} {% if jedi_request.is_pending_ccpo_action %}
<div class='panel__heading request-approval__review__heading'> <div class='panel__heading request-approval__review__heading'>
<h3 class='h3'>Review this Request</h2> <h3 class='h3'>Review this Request</h2>
</div> </div>
@@ -148,7 +149,7 @@
<div class='usa-input'> <div class='usa-input'>
<fieldset class='usa-input__choices usa-input__choices--inline'> <fieldset class='usa-input__choices usa-input__choices--inline'>
<input v-on:change='setReview' type='radio' name='review' id='review-approving' value='approving'/> <input v-on:change='setReview' type='radio' name='review' id='review-approving' value='approving' {{ 'checked' if initialState == 'approving' }}/>
<label for='review-approving'>Ready for approval</label> <label for='review-approving'>Ready for approval</label>
<input v-on:change='setReview' type='radio' name='review' id='review-denying' value='denying'/> <input v-on:change='setReview' type='radio' name='review' id='review-denying' value='denying'/>
@@ -226,7 +227,7 @@
</div> </div>
{% if request.is_pending_ccpo_action %} {% if jedi_request.is_pending_ccpo_action %}
<div v-if='approving || denying' class='action-group' v-cloak> <div v-if='approving || denying' class='action-group' v-cloak>
<button v-if='approving' type="submit" name="approved" class='usa-button usa-button-big'>Approve Request</button> <button v-if='approving' type="submit" name="approved" class='usa-button usa-button-big'>Approve Request</button>
<button v-if='denying' type="submit" name="denied" class='usa-button usa-button-big'>Request Revisions</button> <button v-if='denying' type="submit" name="denied" class='usa-button usa-button-big'>Request Revisions</button>

View File

@@ -5,26 +5,19 @@
{% block content %} {% block content %}
<div class="col"> <div class="col">
{% if request.is_pending_ccpo_acceptance %} {% if jedi_request.is_pending_ccpo_acceptance %}
{{ Alert('Request submitted. Approval pending.', fragment="fragments/pending_ccpo_acceptance_alert.html") }} {{ Alert('Request submitted. Approval pending.', fragment="fragments/pending_ccpo_acceptance_alert.html") }}
{% elif request.is_pending_ccpo_approval %} {% elif jedi_request.is_pending_ccpo_approval %}
{{ Alert('Request submitted. Approval pending.', fragment="fragments/pending_ccpo_approval_modal.html") }}
{% call Alert('Pending CCPO Approval') %}
<p>The CCPO will review and respond to your Financial Verification submission in 3 business days. You will be notified via email or phone.</p>
<p>Once the financial verification is approved you will be invited to create your JEDI Workspace and set-up your projects. Click here for more details.</p>
{% endcall %}
{% elif requires_fv_action %} {% elif requires_fv_action %}
{% include 'requests/review_menu.html' %} {% include 'requests/review_menu.html' %}
{{ Alert('Pending Financial Verification', fragment="fragments/pending_financial_verification.html") }} {{ Alert('Pending Financial Verification', fragment="fragments/pending_financial_verification.html") }}
{% endif %} {% endif %}
<div class="panel"> <div class="panel">
<div class="panel__heading"> <div class="panel__heading">
<h1>Request Details</h1> <h1>Request Details</h1>
<div class="subtitle"><h2>Request: {{ request.displayname }}</h2><span class="label label--info">{{ request.status_displayname }}</span></div> <div class="subtitle"><h2>Request: {{ jedi_request.displayname }}</h2><span class="label label--info">{{ jedi_request.status_displayname }}</span></div>
</div> </div>
<div class="panel__content"> <div class="panel__content">

View File

@@ -19,7 +19,7 @@ def test_can_show_financial_data(client, user_session):
) )
body = response.data.decode() body = response.data.decode()
assert re.search(">\s+Financial Verification\s+<", body) assert re.search(r">\s+Financial Verification\s+<", body)
def test_can_not_show_financial_data(client, user_session): def test_can_not_show_financial_data(client, user_session):
@@ -34,4 +34,4 @@ def test_can_not_show_financial_data(client, user_session):
) )
body = response.data.decode() body = response.data.decode()
assert not re.search(">\s+Financial Verification\s+<", body) assert not re.search(r">\s+Financial Verification\s+<", body)

View File

@@ -21,7 +21,7 @@ def test_submit_reviewed_request(monkeypatch, client, user_session):
follow_redirects=False, follow_redirects=False,
) )
assert "/requests" in response.headers["Location"] assert "/requests" in response.headers["Location"]
assert "modal=pendingCCPOApproval" in response.headers["Location"] assert "modal=pendingCCPOAcceptance" in response.headers["Location"]
def test_submit_autoapproved_reviewed_request(monkeypatch, client, user_session): def test_submit_autoapproved_reviewed_request(monkeypatch, client, user_session):