set pending CCPO review status on request with complete financial information

This commit is contained in:
dandds 2018-08-22 13:35:06 -04:00
parent d66a496fbc
commit f1ec71fe42
3 changed files with 23 additions and 11 deletions

View File

@ -232,23 +232,16 @@ WHERE requests_with_status.status = :status
_TASK_ORDER_DATA = [col.name for col in TaskOrder.__table__.c if col.name != "id"]
@classmethod
def update_financial_verification(cls, request_id, financial_data):
def update_financial_verification(cls, request_id, financial_data, completed=False):
request = Requests._get_with_lock(request_id)
if not request:
return
request_data = financial_data.copy()
task_order_data = {k: request_data.pop(k) for (k,v) in financial_data.items() if k in Requests._TASK_ORDER_DATA}
task_order_number = request_data.pop("task_order_number")
task_order = None
if task_order_data:
task_order_data["number"] = request_data.pop("task_order_number")
task_order = TaskOrders.create(**task_order_data, source=TaskOrderSource.MANUAL)
else:
try:
task_order = TaskOrders.get(financial_data["task_order_number"])
except NotFoundError:
pass
task_order = Requests._get_or_create_task_order(task_order_number, task_order_data)
if task_order:
request.task_order = task_order
@ -256,5 +249,18 @@ WHERE requests_with_status.status = :status
Requests._merge_body(request, {"financial_verification": request_data})
if completed:
Requests.set_status(request, RequestStatus.PENDING_CCPO_APPROVAL)
db.session.add(request)
db.session.commit()
@classmethod
def _get_or_create_task_order(cls, number, task_order_data={}):
if task_order_data:
return TaskOrders.create(**task_order_data, number=number, source=TaskOrderSource.MANUAL)
else:
try:
return TaskOrders.get(number)
except NotFoundError:
return

View File

@ -39,7 +39,7 @@ def update_financial_verification(request_id):
valid = form.perform_extra_validation(
existing_request.body.get("financial_verification")
)
updated_request = Requests.update_financial_verification(request_id, form.data)
updated_request = Requests.update_financial_verification(request_id, form.data, completed=valid)
if valid:
new_workspace = Requests.approve_and_create_workspace(updated_request)
return redirect(url_for("workspaces.workspace_projects", workspace_id=new_workspace.id, newWorkspace=True))

View File

@ -143,3 +143,9 @@ def test_update_financial_verification_with_invalid_task_order():
Requests.update_financial_verification(request.id, request_financial_data)
assert not request.task_order
def test_update_financial_verification_completed():
request = RequestFactory.create()
Requests.update_financial_verification(request.id, request_financial_data, completed=True)
assert request.status == RequestStatus.PENDING_CCPO_APPROVAL