diff --git a/atst/domain/requests.py b/atst/domain/requests.py index 57c69d4c..93cbac90 100644 --- a/atst/domain/requests.py +++ b/atst/domain/requests.py @@ -99,9 +99,6 @@ class Requests(object): @classmethod def update(cls, request_id, request_delta): request = Requests._get_with_lock(request_id) - if not request: - return - request = Requests._merge_body(request, request_delta) db.session.add(request) @@ -122,7 +119,7 @@ class Requests(object): ) except NoResultFound: - return + raise NotFoundError() @classmethod def _merge_body(cls, request, request_delta): @@ -236,8 +233,6 @@ WHERE requests_with_status.status = :status @classmethod def update_financial_verification(cls, request_id, financial_data): request = Requests._get_with_lock(request_id) - if not request: - return request_data = financial_data.copy() task_order_data = { @@ -273,12 +268,10 @@ WHERE requests_with_status.status = :status return request @classmethod - def submit_financial_verification(cls, request_id): - request = Requests._get_with_lock(request_id) - if not request: - return - + def submit_financial_verification(cls, request): Requests.set_status(request, RequestStatus.PENDING_CCPO_APPROVAL) db.session.add(request) db.session.commit() + + return request diff --git a/atst/models/request.py b/atst/models/request.py index 3d79a706..e653edf8 100644 --- a/atst/models/request.py +++ b/atst/models/request.py @@ -17,6 +17,8 @@ class Request(Base): "RequestStatusEvent", backref="request", order_by="RequestStatusEvent.sequence" ) + workspace = relationship("Workspace", uselist=False, backref="request") + user_id = Column(ForeignKey("users.id"), nullable=False) creator = relationship("User") @@ -35,3 +37,13 @@ class Request(Base): def annual_spend(self): monthly = self.body.get("details_of_use", {}).get("estimated_monthly_spend", 0) return monthly * 12 + + @property + def financial_verification(self): + return self.body.get("financial_verification") + + @property + def is_financially_verified(self): + if self.task_order: + return self.task_order.verified + return False diff --git a/atst/models/task_order.py b/atst/models/task_order.py index ce84a56e..2a195176 100644 --- a/atst/models/task_order.py +++ b/atst/models/task_order.py @@ -35,3 +35,7 @@ class TaskOrder(Base): attachment_id = Column(ForeignKey("attachments.id")) pdf = relationship("Attachment") + + @property + def verified(self): + return self.source == Source.EDA diff --git a/atst/models/workspace.py b/atst/models/workspace.py index fd8f981e..8f6c58d9 100644 --- a/atst/models/workspace.py +++ b/atst/models/workspace.py @@ -43,7 +43,6 @@ class Workspace(Base, TimestampsMixin): id = Id() name = Column(String, unique=True) request_id = Column(ForeignKey("requests.id"), nullable=False) - request = relationship("Request") projects = relationship("Project", back_populates="workspace") roles = relationship("WorkspaceRole") diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 17137387..3105c343 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -40,15 +40,22 @@ def update_financial_verification(request_id): ) updated_request = Requests.update_financial_verification(request_id, form.data) if valid: - Requests.submit_financial_verification(request_id) - new_workspace = Requests.approve_and_create_workspace(updated_request) - return redirect( - url_for( - "workspaces.new_project", - workspace_id=new_workspace.id, - newWorkspace=True, + submitted_request = Requests.submit_financial_verification(updated_request) + if submitted_request.is_financially_verified: + new_workspace = Requests.approve_and_create_workspace(submitted_request) + return redirect( + url_for( + "workspaces.new_project", + workspace_id=new_workspace.id, + newWorkspace=True, + ) + ) + else: + return redirect( + url_for( + "requests.requests_index", pendingFinancialVerification=True + ) ) - ) else: form.reset() @@ -59,8 +66,3 @@ def update_financial_verification(request_id): else: form.reset() return render_template("requests/financial_verification.html", **rerender_args) - - -@requests_bp.route("/requests/financial_verification_submitted") -def financial_verification_submitted(): - return render_template("requests/financial_verification_submitted.html") diff --git a/atst/routes/requests/index.py b/atst/routes/requests/index.py index 25ecfe3f..18ed0056 100644 --- a/atst/routes/requests/index.py +++ b/atst/routes/requests/index.py @@ -22,6 +22,7 @@ def map_request(request): ) return { + "workspace_id": request.workspace.id if request.workspace else None, "order_id": request.id, "is_new": is_new, "status": request.status_displayname, diff --git a/templates/requests.html b/templates/requests.html index 31f2c7d1..edb6f7d8 100644 --- a/templates/requests.html +++ b/templates/requests.html @@ -116,7 +116,15 @@ {% endif %} {{ r['annual_usage'] | dollars }} - {{ r['status'] }} + + {% if r.status == 'Approved' %} + + {{ r.status }} + + {% else %} + {{ r.status }} + {% endif %} + {% endfor %} diff --git a/tests/routes/test_financial_verification.py b/tests/routes/test_financial_verification.py index f8a89691..d0da1bf2 100644 --- a/tests/routes/test_financial_verification.py +++ b/tests/routes/test_financial_verification.py @@ -128,7 +128,7 @@ class TestPENumberInForm: response = self.submit_data(client, data, extended=True) assert response.status_code == 302 - assert "/projects/new" in response.headers.get("Location") + assert "/requests" in response.headers.get("Location") def test_submit_invalid_extended_financial_form( self, monkeypatch, user_session, client, extended_financial_verification_data