ccpo can request changes on a request
This commit is contained in:
parent
c588517100
commit
24cbb90ce2
@ -268,12 +268,22 @@ WHERE requests_with_status.status = :status
|
|||||||
return request
|
return request
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def approve_for_financial_verification(cls, request, review_data):
|
def _add_review(cls, request, review_data):
|
||||||
Requests.set_status(request, RequestStatus.PENDING_FINANCIAL_VERIFICATION)
|
|
||||||
|
|
||||||
request.latest_status.review = RequestReview(**review_data)
|
request.latest_status.review = RequestReview(**review_data)
|
||||||
|
|
||||||
db.session.add(request)
|
db.session.add(request)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
return request
|
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)
|
||||||
|
@ -48,7 +48,11 @@ def submit_approval(request_id):
|
|||||||
|
|
||||||
form = CCPOReviewForm(http_request.form)
|
form = CCPOReviewForm(http_request.form)
|
||||||
if form.validate():
|
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"))
|
return redirect(url_for("requests.requests_index"))
|
||||||
else:
|
else:
|
||||||
return render_approval(request, form)
|
return render_approval(request, form)
|
||||||
|
@ -117,9 +117,9 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class='action-group'>
|
<section class='action-group'>
|
||||||
<button type="submit" class='usa-button usa-button-big'>Approve Request</button>
|
<input type="submit" name="approved" class='usa-button usa-button-big' value='Approve Request'>
|
||||||
<a href='#' class='usa-button usa-button-big usa-button-secondary'>Mark as Changes Requested</a>
|
<input type="submit" name="denied" class='usa-button usa-button-big usa-button-secondary' value='Mark as Changes Requested'>
|
||||||
<a href='#' class='icon-link'>
|
<a href='{{ url_for("requests.requests_index") }}' class='icon-link'>
|
||||||
{{ Icon('x') }}
|
{{ Icon('x') }}
|
||||||
<span>Cancel</span>
|
<span>Cancel</span>
|
||||||
</a>
|
</a>
|
||||||
|
@ -181,10 +181,10 @@ def test_set_status_sets_revision():
|
|||||||
assert request.latest_revision == request.status_events[-1].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()
|
request = RequestFactory.create()
|
||||||
review_data = RequestReviewFactory.dictionary()
|
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
|
assert request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION
|
||||||
current_review = request.latest_status.review
|
current_review = request.latest_status.review
|
||||||
assert current_review.fname_mao == review_data["fname_mao"]
|
assert current_review.fname_mao == review_data["fname_mao"]
|
||||||
|
@ -2,6 +2,7 @@ import os
|
|||||||
from flask import url_for
|
from flask import url_for
|
||||||
|
|
||||||
from atst.models.attachment import Attachment
|
from atst.models.attachment import Attachment
|
||||||
|
from atst.models.request_status_event import RequestStatus
|
||||||
from atst.domain.roles import Roles
|
from atst.domain.roles import Roles
|
||||||
|
|
||||||
from tests.factories import (
|
from tests.factories import (
|
||||||
@ -68,7 +69,22 @@ def test_can_submit_request_approval(client, user_session):
|
|||||||
user_session(user)
|
user_session(user)
|
||||||
request = RequestFactory.create()
|
request = RequestFactory.create()
|
||||||
review_data = RequestReviewFactory.dictionary()
|
review_data = RequestReviewFactory.dictionary()
|
||||||
|
review_data["approved"] = True
|
||||||
response = client.post(
|
response = client.post(
|
||||||
url_for("requests.submit_approval", request_id=request.id), data=review_data
|
url_for("requests.submit_approval", request_id=request.id), data=review_data
|
||||||
)
|
)
|
||||||
assert response.status_code == 302
|
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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user