From f1ec71fe4207c9769493e32308782543445a9ba4 Mon Sep 17 00:00:00 2001 From: dandds Date: Wed, 22 Aug 2018 13:35:06 -0400 Subject: [PATCH] set pending CCPO review status on request with complete financial information --- atst/domain/requests.py | 26 ++++++++++++------- .../routes/requests/financial_verification.py | 2 +- tests/domain/test_requests.py | 6 +++++ 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/atst/domain/requests.py b/atst/domain/requests.py index a1159d48..c0dc596e 100644 --- a/atst/domain/requests.py +++ b/atst/domain/requests.py @@ -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 diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 4283451b..554f9179 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -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)) diff --git a/tests/domain/test_requests.py b/tests/domain/test_requests.py index 8ef88c34..8cae80b1 100644 --- a/tests/domain/test_requests.py +++ b/tests/domain/test_requests.py @@ -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 +