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
|
||||
|
||||
@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)
|
||||
|
@ -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)
|
||||
|
@ -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>
|
||||
|
@ -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"]
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user