From a2d4602f0cad47bb7b94816c705894544e2fa2cf Mon Sep 17 00:00:00 2001 From: richard-dds Date: Mon, 27 Aug 2018 10:24:36 -0400 Subject: [PATCH 01/10] Remove unused route --- atst/routes/requests/financial_verification.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 17137387..d3606f3b 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -59,8 +59,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") From 3ab528f1927609839a3d6b12c51f2120b8506ce8 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Mon, 27 Aug 2018 14:54:45 -0400 Subject: [PATCH 02/10] Raise instead of returning None --- atst/domain/requests.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/atst/domain/requests.py b/atst/domain/requests.py index 57c69d4c..06f1e24f 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 = { @@ -275,10 +270,9 @@ WHERE requests_with_status.status = :status @classmethod def submit_financial_verification(cls, request_id): request = Requests._get_with_lock(request_id) - if not request: - return - Requests.set_status(request, RequestStatus.PENDING_CCPO_APPROVAL) db.session.add(request) db.session.commit() + + return request From 60275f8c3afd754106b1a16869421a9f262bf12a Mon Sep 17 00:00:00 2001 From: richard-dds Date: Wed, 29 Aug 2018 12:52:20 -0400 Subject: [PATCH 03/10] Check that request is financially verified before approving --- atst/models/request.py | 8 ++++++++ atst/routes/requests/financial_verification.py | 3 +-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/atst/models/request.py b/atst/models/request.py index 3d79a706..9180e85e 100644 --- a/atst/models/request.py +++ b/atst/models/request.py @@ -35,3 +35,11 @@ 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): + return self.task_order is not None diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index d3606f3b..50f04102 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -39,8 +39,7 @@ def update_financial_verification(request_id): existing_request.body.get("financial_verification") ) updated_request = Requests.update_financial_verification(request_id, form.data) - if valid: - Requests.submit_financial_verification(request_id) + if valid and updated_request.is_financially_verified: new_workspace = Requests.approve_and_create_workspace(updated_request) return redirect( url_for( From 8a813d9ac34e63ded41187f24d6056c7576aef45 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Wed, 29 Aug 2018 12:53:15 -0400 Subject: [PATCH 04/10] Display workspace link for approved requests --- atst/models/request.py | 2 ++ atst/routes/requests/index.py | 1 + templates/requests.html | 10 +++++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/atst/models/request.py b/atst/models/request.py index 9180e85e..b8d51756 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, back_populates="request") + user_id = Column(ForeignKey("users.id"), nullable=False) creator = relationship("User") 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 %} From ccf1b3b5aa79dd5f39940772b5a1dfcd6435b8f6 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Wed, 29 Aug 2018 12:58:21 -0400 Subject: [PATCH 05/10] Do submit financial verification --- atst/domain/requests.py | 3 +-- atst/routes/requests/financial_verification.py | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/atst/domain/requests.py b/atst/domain/requests.py index 06f1e24f..93cbac90 100644 --- a/atst/domain/requests.py +++ b/atst/domain/requests.py @@ -268,8 +268,7 @@ WHERE requests_with_status.status = :status return request @classmethod - def submit_financial_verification(cls, request_id): - request = Requests._get_with_lock(request_id) + def submit_financial_verification(cls, request): Requests.set_status(request, RequestStatus.PENDING_CCPO_APPROVAL) db.session.add(request) diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 50f04102..ab25a235 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -39,15 +39,17 @@ def update_financial_verification(request_id): existing_request.body.get("financial_verification") ) updated_request = Requests.update_financial_verification(request_id, form.data) - if valid and updated_request.is_financially_verified: - new_workspace = Requests.approve_and_create_workspace(updated_request) - return redirect( - url_for( - "workspaces.new_project", - workspace_id=new_workspace.id, - newWorkspace=True, + if valid: + submitted_request = Requests.submit_financial_verification(updated_request) + if updated_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: form.reset() From caf6882a11f501ded6515b1152f589fb3d4c245a Mon Sep 17 00:00:00 2001 From: richard-dds Date: Wed, 29 Aug 2018 12:59:14 -0400 Subject: [PATCH 06/10] Only consider request financially verified if TO is from EDA --- atst/models/request.py | 4 +++- atst/models/task_order.py | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/atst/models/request.py b/atst/models/request.py index b8d51756..8ed9d567 100644 --- a/atst/models/request.py +++ b/atst/models/request.py @@ -44,4 +44,6 @@ class Request(Base): @property def is_financially_verified(self): - return self.task_order is not None + 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 From 62aacf55e7440d369a44040c116351cbf0cff44b Mon Sep 17 00:00:00 2001 From: richard-dds Date: Wed, 29 Aug 2018 13:01:28 -0400 Subject: [PATCH 07/10] If request FV is not verified, redirect to requests index --- atst/routes/requests/financial_verification.py | 4 ++++ tests/routes/test_financial_verification.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index ab25a235..391115ea 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -50,6 +50,10 @@ def update_financial_verification(request_id): newWorkspace=True, ) ) + else: + return redirect( + url_for("requests.requests_index", pendingFinancialVerification=True) + ) else: form.reset() 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 From f389bd31d1b9d7e38f47c9e5accfa2a41efa1562 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Wed, 29 Aug 2018 16:40:08 -0400 Subject: [PATCH 08/10] Check submitted request for financial verification --- atst/routes/requests/financial_verification.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 391115ea..b7e98745 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -41,7 +41,7 @@ def update_financial_verification(request_id): updated_request = Requests.update_financial_verification(request_id, form.data) if valid: submitted_request = Requests.submit_financial_verification(updated_request) - if updated_request.is_financially_verified: + if submitted_request.is_financially_verified: new_workspace = Requests.approve_and_create_workspace(submitted_request) return redirect( url_for( From e945e43f74f5ec8f08862c5b06829a2db071c9c5 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Thu, 30 Aug 2018 10:10:58 -0400 Subject: [PATCH 09/10] Formatting --- atst/routes/requests/financial_verification.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index b7e98745..3105c343 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -52,7 +52,9 @@ def update_financial_verification(request_id): ) else: return redirect( - url_for("requests.requests_index", pendingFinancialVerification=True) + url_for( + "requests.requests_index", pendingFinancialVerification=True + ) ) else: From d4b96b5c54e65e4dca228c63f12a6763973e6a8b Mon Sep 17 00:00:00 2001 From: richard-dds Date: Thu, 30 Aug 2018 10:17:04 -0400 Subject: [PATCH 10/10] Use backref instead of back_populates --- atst/models/request.py | 2 +- atst/models/workspace.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/atst/models/request.py b/atst/models/request.py index 8ed9d567..e653edf8 100644 --- a/atst/models/request.py +++ b/atst/models/request.py @@ -17,7 +17,7 @@ class Request(Base): "RequestStatusEvent", backref="request", order_by="RequestStatusEvent.sequence" ) - workspace = relationship("Workspace", uselist=False, back_populates="request") + workspace = relationship("Workspace", uselist=False, backref="request") user_id = Column(ForeignKey("users.id"), nullable=False) creator = relationship("User") 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")