diff --git a/atst/app.py b/atst/app.py index b91544ba..2fbe08b2 100644 --- a/atst/app.py +++ b/atst/app.py @@ -9,6 +9,7 @@ from atst.handlers.root import Root from atst.handlers.login_redirect import LoginRedirect from atst.handlers.workspace import Workspace from atst.handlers.request import Request +from atst.handlers.request_financial_verification import RequestFinancialVerification from atst.handlers.request_new import RequestNew from atst.handlers.request_submit import RequestsSubmit from atst.handlers.dev import Dev @@ -98,6 +99,22 @@ def make_app(config, deps, **kwargs): {"page": "request_approval"}, name="request_approval" ), + url( + r"/requests/verify/(\S+)", + RequestFinancialVerification, + { + "page": "financial_verification", + "requests_client": deps["requests_client"], + "fundz_client": deps["fundz_client"], + }, + name="financial_verification", + ), + url( + r"/requests/financial_verification_submitted", + Main, + {"page": "requests/financial_verification_submitted"}, + name="financial_verification_submitted", + ), url(r"/users", Main, {"page": "users"}, name="users"), url(r"/reports", Main, {"page": "reports"}, name="reports"), url(r"/calculator", Main, {"page": "calculator"}, name="calculator"), diff --git a/atst/handlers/request_financial_verification.py b/atst/handlers/request_financial_verification.py new file mode 100644 index 00000000..4c81f9d7 --- /dev/null +++ b/atst/handlers/request_financial_verification.py @@ -0,0 +1,75 @@ +import tornado + +from atst.handler import BaseHandler +from atst.forms.financial import FinancialForm + + +class RequestFinancialVerification(BaseHandler): + def initialize(self, page, requests_client, fundz_client): + self.page = page + self.requests_client = requests_client + self.fundz_client = fundz_client + + @tornado.gen.coroutine + def get_existing_request(self, request_id): + if request_id is None: + return {} + request = yield self.requests_client.get("/requests/{}".format(request_id)) + return request.json + + @tornado.web.authenticated + @tornado.gen.coroutine + def get(self, request_id=None): + existing_request = yield self.get_existing_request(request_id) + form = FinancialForm(data=existing_request['body'].get('financial_verification')) + self.render( + "requests/financial_verification.html.to", + page=self.page, + f=form, + request_id=request_id, + ) + + @tornado.gen.coroutine + def update_request(self, request_id, form_data): + request_data = { + "creator_id": self.current_user["id"], + "request": {"financial_verification": form_data}, + } + response = yield self.requests_client.patch( + "/requests/{}".format(request_id), json=request_data + ) + return response + + @tornado.web.authenticated + @tornado.gen.coroutine + def post(self, request_id=None): + self.check_xsrf_cookie() + post_data = self.request.arguments + existing_request = yield self.get_existing_request(request_id) + form = FinancialForm(post_data) + + rerender_args = dict(request_id=request_id, f=form) + + if form.validate(): + response = yield self.update_request(request_id, form.data) + if response.ok: + valid = yield form.perform_extra_validation( + existing_request.get('body', {}).get('financial_verification'), + self.fundz_client + ) + if valid: + self.redirect( + self.application.default_router.reverse_url("financial_verification_submitted") + ) + else: + self.render( + "requests/financial_verification.html.to", + **rerender_args + ) + else: + self.set_status(response.code) + else: + self.render( + "requests/financial_verification.html.to", + **rerender_args + ) diff --git a/atst/handlers/request_new.py b/atst/handlers/request_new.py index 096572d3..de3c2713 100644 --- a/atst/handlers/request_new.py +++ b/atst/handlers/request_new.py @@ -6,7 +6,6 @@ from atst.forms.request import RequestForm from atst.forms.org import OrgForm from atst.forms.poc import POCForm from atst.forms.review import ReviewForm -from atst.forms.financial import FinancialForm class RequestNew(BaseHandler): @@ -221,12 +220,6 @@ class JEDIRequestFlow(object): "form": ReviewForm, "show":True, }, - { - "title": "Financial Verification", - "section": "financial_verification", - "form": FinancialForm, - "show": self.request and self.request["status"] == "approved", - }, ] @tornado.gen.coroutine diff --git a/templates/requests.html.to b/templates/requests.html.to index 3d420a88..1814da3f 100644 --- a/templates/requests.html.to +++ b/templates/requests.html.to @@ -39,7 +39,8 @@
{% for r in requests %}