set pending CCPO review status on request with complete financial information
This commit is contained in:
parent
d66a496fbc
commit
f1ec71fe42
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user