ccpo can request changes on a request

This commit is contained in:
dandds 2018-09-10 11:17:47 -04:00
parent c588517100
commit 24cbb90ce2
5 changed files with 39 additions and 9 deletions

View File

@ -268,12 +268,22 @@ WHERE requests_with_status.status = :status
return request
@classmethod
def approve_for_financial_verification(cls, request, review_data):
Requests.set_status(request, RequestStatus.PENDING_FINANCIAL_VERIFICATION)
def _add_review(cls, request, review_data):
request.latest_status.review = RequestReview(**review_data)
db.session.add(request)
db.session.commit()
return request
@classmethod
def accept_for_financial_verification(cls, request, review_data):
Requests.set_status(request, RequestStatus.PENDING_FINANCIAL_VERIFICATION)
return Requests._add_review(request, review_data)
@classmethod
def request_changes(cls, request, review_data):
Requests.set_status(request, RequestStatus.CHANGES_REQUESTED)
return Requests._add_review(request, review_data)

View File

@ -48,7 +48,11 @@ def submit_approval(request_id):
form = CCPOReviewForm(http_request.form)
if form.validate():
Requests.approve_for_financial_verification(request, form.data)
if http_request.form.get("approved"):
Requests.accept_for_financial_verification(request, form.data)
else:
Requests.request_changes(request, form.data)
return redirect(url_for("requests.requests_index"))
else:
return render_approval(request, form)

View File

@ -117,9 +117,9 @@
</section>
<section class='action-group'>
<button type="submit" class='usa-button usa-button-big'>Approve Request</button>
<a href='#' class='usa-button usa-button-big usa-button-secondary'>Mark as Changes Requested</a>
<a href='#' class='icon-link'>
<input type="submit" name="approved" class='usa-button usa-button-big' value='Approve Request'>
<input type="submit" name="denied" class='usa-button usa-button-big usa-button-secondary' value='Mark as Changes Requested'>
<a href='{{ url_for("requests.requests_index") }}' class='icon-link'>
{{ Icon('x') }}
<span>Cancel</span>
</a>

View File

@ -181,10 +181,10 @@ def test_set_status_sets_revision():
assert request.latest_revision == request.status_events[-1].revision
def test_approve_for_financial_verification():
def test_accept_for_financial_verification():
request = RequestFactory.create()
review_data = RequestReviewFactory.dictionary()
Requests.approve_for_financial_verification(request, review_data)
Requests.accept_for_financial_verification(request, review_data)
assert request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION
current_review = request.latest_status.review
assert current_review.fname_mao == review_data["fname_mao"]

View File

@ -2,6 +2,7 @@ import os
from flask import url_for
from atst.models.attachment import Attachment
from atst.models.request_status_event import RequestStatus
from atst.domain.roles import Roles
from tests.factories import (
@ -68,7 +69,22 @@ def test_can_submit_request_approval(client, user_session):
user_session(user)
request = RequestFactory.create()
review_data = RequestReviewFactory.dictionary()
review_data["approved"] = True
response = client.post(
url_for("requests.submit_approval", request_id=request.id), data=review_data
)
assert response.status_code == 302
assert request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION
def test_can_submit_request_denial(client, user_session):
user = UserFactory.from_atat_role("ccpo")
user_session(user)
request = RequestFactory.create()
review_data = RequestReviewFactory.dictionary()
review_data["denied"] = True
response = client.post(
url_for("requests.submit_approval", request_id=request.id), data=review_data
)
assert response.status_code == 302
assert request.status == RequestStatus.CHANGES_REQUESTED