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): class ValidatedForm(Form):
def validate(self, requests_client=None): def validate_warnings(self, requests_client=None):
return super(ValidatedForm, self).validate() return True

View File

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

View File

@@ -37,7 +37,7 @@ def test_submit_valid_request_form(monkeypatch, http_client, base_url):
monkeypatch.setattr( monkeypatch.setattr(
"atst.handlers.request_new.RequestNew.check_xsrf_cookie", lambda s: True "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 # this just needs to send a known invalid form value
response = yield http_client.fetch( response = yield http_client.fetch(