Refactor to allow validating warnings on a form

This commit is contained in:
Patrick Smith 2018-07-16 15:49:27 -04:00
parent c86e703618
commit 10d4c2b90b
3 changed files with 29 additions and 16 deletions

View File

@ -3,5 +3,5 @@ from wtforms_tornado import Form
class ValidatedForm(Form):
def validate(self, requests_client=None):
return super(ValidatedForm, self).validate()
def validate_warnings(self, requests_client=None):
return True

View File

@ -24,28 +24,38 @@ class RequestNew(BaseHandler):
self.requests_client, screen, post_data=post_data, request_id=request_id
)
rerender_args = dict(
f=jedi_flow.form,
data=post_data,
page=self.page,
screens=jedi_flow.screens,
current=screen,
next_screen=jedi_flow.next_screen,
request_id=jedi_flow.request_id,
)
if jedi_flow.validate():
response = yield jedi_flow.create_or_update_request(self.get_current_user())
if response.ok:
if jedi_flow.next_screen >= len(jedi_flow.screens):
where = "/requests"
if jedi_flow.validate_warnings():
if jedi_flow.next_screen >= len(jedi_flow.screens):
where = "/requests"
else:
where = self.application.default_router.reverse_url(
"request_form_update", jedi_flow.next_screen, jedi_flow.request_id
)
self.redirect(where)
else:
where = self.application.default_router.reverse_url(
"request_form_update", jedi_flow.next_screen, jedi_flow.request_id
self.render(
"requests/screen-%d.html.to" % int(screen),
**rerender_args
)
self.redirect(where)
else:
self.set_status(response.code)
else:
self.render(
"requests/screen-%d.html.to" % int(screen),
f=jedi_flow.form,
data=post_data,
page=self.page,
screens=jedi_flow.screens,
current=screen,
next_screen=jedi_flow.next_screen,
request_id=jedi_flow.request_id,
**rerender_args
)
@tornado.web.authenticated
@ -108,7 +118,10 @@ class JEDIRequestFlow(object):
return self.form_class()()
def validate(self):
return self.form.validate(self.requests_client)
return self.form.validate()
def validate_warnings(self):
return self.form.validate_warnings(self.requests_client)
@property
def current_screen(self):

View File

@ -37,7 +37,7 @@ def test_submit_valid_request_form(monkeypatch, http_client, base_url):
monkeypatch.setattr(
"atst.handlers.request_new.RequestNew.check_xsrf_cookie", lambda s: True
)
monkeypatch.setattr("atst.forms.request.RequestForm.validate", lambda s, c: True)
monkeypatch.setattr("atst.forms.request.RequestForm.validate", lambda s: True)
# this just needs to send a known invalid form value
response = yield http_client.fetch(