Use url param instead

This commit is contained in:
richard-dds 2018-06-19 11:37:27 -04:00
parent 62a5d4a983
commit a9afad0a7f
6 changed files with 40 additions and 33 deletions

View File

@ -21,6 +21,10 @@ class ApiClient(object):
def post(self, path, **kwargs): def post(self, path, **kwargs):
return (yield self.make_request('POST', self.base_url + path, **kwargs)) return (yield self.make_request('POST', self.base_url + path, **kwargs))
@tornado.gen.coroutine
def patch(self, path, **kwargs):
return (yield self.make_request('PATCH', self.base_url + path, **kwargs))
@tornado.gen.coroutine @tornado.gen.coroutine
def delete(self, path, **kwargs): def delete(self, path, **kwargs):
return (yield self.make_request('DELETE', self.base_url + path, **kwargs)) return (yield self.make_request('DELETE', self.base_url + path, **kwargs))

View File

@ -44,7 +44,13 @@ def make_app(config, deps, **kwargs):
r"/requests/new/([0-9])", r"/requests/new/([0-9])",
RequestNew, RequestNew,
{"page": "requests_new", "requests_client": deps["requests_client"]}, {"page": "requests_new", "requests_client": deps["requests_client"]},
name="request_form", name="request_form_new",
),
url(
r"/requests/new/([0-9])/(\S+)",
RequestNew,
{"page": "requests_new", "requests_client": deps["requests_client"]},
name="request_form_update",
), ),
url(r"/users", MainHandler, {"page": "users"}, name="users"), url(r"/users", MainHandler, {"page": "users"}, name="users"),
url(r"/reports", MainHandler, {"page": "reports"}, name="reports"), url(r"/reports", MainHandler, {"page": "reports"}, name="reports"),

View File

@ -47,15 +47,15 @@ class RequestNew(BaseHandler):
@tornado.web.authenticated @tornado.web.authenticated
@tornado.gen.coroutine @tornado.gen.coroutine
def post(self, screen=1): def post(self, screen=1, request_id=None):
self.check_xsrf_cookie() self.check_xsrf_cookie()
screen = int(screen) screen = int(screen)
form = self.screens[ screen - 1 ]['form'](self.request.arguments) form = self.screens[ screen - 1 ]['form'](self.request.arguments)
if form.validate(): if form.validate():
response = yield self.create_or_update_request(form.data, self.request_id()) response = yield self.create_or_update_request(form.data, request_id)
if response.ok: if response.ok:
url = self.application.default_router.reverse_url('request_form', str(screen + 1)) where = self.application.default_router.reverse_url(
where = '{}?request_id={}'.format(url, response.json['id']) 'request_form_update', str(screen + 1), request_id or response.json['id'])
self.redirect(where) self.redirect(where)
else: else:
self.set_status(response.code) self.set_status(response.code)
@ -64,17 +64,15 @@ class RequestNew(BaseHandler):
@tornado.web.authenticated @tornado.web.authenticated
@tornado.gen.coroutine @tornado.gen.coroutine
def get(self, screen=1): def get(self, screen=1, request_id=None):
form = None form = None
request_id = self.request_id()
if request_id: if request_id:
request = yield self.get_request(request_id) request = yield self.get_request(request_id)
form_data = request['body'] if request else {} form_data = request['body'] if request else {}
from pprint import pprint; pprint(form_data)
form = self.screens[ int(screen) - 1 ]['form'](data=form_data) form = self.screens[ int(screen) - 1 ]['form'](data=form_data)
self.show_form(screen=screen, form=form) self.show_form(screen=screen, request_id=request_id, form=form)
def show_form(self, screen=1, form=None): def show_form(self, screen=1, request_id=None, form=None):
if not form: if not form:
form = self.screens[ int(screen) - 1 ]['form'](self.request.arguments) form = self.screens[ int(screen) - 1 ]['form'](self.request.arguments)
self.render('requests/screen-%d.html.to' % int(screen), self.render('requests/screen-%d.html.to' % int(screen),
@ -82,13 +80,14 @@ class RequestNew(BaseHandler):
page=self.page, page=self.page,
screens=self.screens, screens=self.screens,
current=int(screen), current=int(screen),
next_screen = int(screen) + 1 ) next_screen=int(screen) + 1,
request_id=request_id)
@tornado.gen.coroutine @tornado.gen.coroutine
def get_request(self, request_id): def get_request(self, request_id):
try: try:
request = yield self.requests_client.get('/requests/{}'.format(request_id)) request = yield self.requests_client.get('/requests/{}'.format(request_id))
except HTTPError as http_error: except HTTPError:
request = None request = None
return request.json return request.json
@ -100,15 +99,8 @@ class RequestNew(BaseHandler):
} }
if request_id: if request_id:
response = yield self.requests_client.patch( response = yield self.requests_client.patch(
'/requests/{}'.format(request_id), request_data) '/requests/{}'.format(request_id), json=request_data)
else: else:
response = yield self.requests_client.post( response = yield self.requests_client.post(
'/requests', json=request_data) '/requests', json=request_data)
return response return response
def request_id(self):
arg = self.request.arguments.get('request_id')
if arg:
return arg[0].decode('utf-8')
else:
return None

View File

@ -5,8 +5,8 @@
<p class="usa-font-lead">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus error omnis a, tenetur similique quo officiis voluptates eum recusandae dolorem minus dignissimos, magni consequatur, maxime debitis reprehenderit sint non iusto?</p> <p class="usa-font-lead">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus error omnis a, tenetur similique quo officiis voluptates eum recusandae dolorem minus dignissimos, magni consequatur, maxime debitis reprehenderit sint non iusto?</p>
<a class='usa-button usa-button-secondary' href='{{ reverse_url('request_form',next_screen) }}'>New Application</a> <a class='usa-button usa-button-secondary' href='{{ reverse_url('request_form_new',next_screen) }}'>New Application</a>
<a class='usa-button usa-button-secondary' href='{{ reverse_url('request_form',next_screen) }}'>Existing Application</a> <a class='usa-button usa-button-secondary' href='{{ reverse_url('request_form_new',next_screen) }}'>Existing Application</a>
<a class='usa-button usa-button-secondary' href='{{ reverse_url('request_form',next_screen) }}'>Sandbox Environment</a> <a class='usa-button usa-button-secondary' href='{{ reverse_url('request_form_new',next_screen) }}'>Sandbox Environment</a>
{% end %} {% end %}

View File

@ -2,7 +2,7 @@
{% for i,s in enumerate(screens) %} {% for i,s in enumerate(screens) %}
<li> <li>
{% if i+1==current %} {% if i+1==current %}
<a class="usa-current" href="{{ reverse_url('request_form',i+1) }}"> <a class="usa-current" href="{{ reverse_url('request_form_update', i+1, request_id) if request_id else reverse_url('request_form_new',i+1) }}">
{{ i+1 }}. {{ s['title'] }} {{ i+1 }}. {{ s['title'] }}
</a> </a>
{% if s.get('subitems') %} {% if s.get('subitems') %}
@ -14,7 +14,7 @@
{% end %} {% end %}
{% else %} {% else %}
<a href='{{ reverse_url('request_form',i+1) }}'> <a href="{{ reverse_url('request_form_update', i+1, request_id) if request_id else reverse_url('request_form_new',i+1) }}">
{{ i+1 }}. {{ s['title'] }} {{ i+1 }}. {{ s['title'] }}
</a> </a>
{% end %} {% end %}

View File

@ -14,7 +14,12 @@
<main class="main-content usa-width-two-thirds"> <main class="main-content usa-width-two-thirds">
<form method='POST' action='{{ reverse_url('request_form', current) }}'> {% if request_id %}
<form method='POST' action="{{ reverse_url('request_form_update', current, request_id) }}">
{% else %}
<form method='POST' action="{{ reverse_url('request_form_new', current) }}">
{% end %}
{% module xsrf_form_html() %} {% module xsrf_form_html() %}
{% block form %} {% block form %}
form goes here form goes here