Save request id in query param

This commit is contained in:
richard-dds 2018-06-19 10:26:50 -04:00
parent 234e1d344e
commit 62a5d4a983

View File

@ -6,6 +6,7 @@ from atst.forms.funding import FundingForm
from atst.forms.readiness import ReadinessForm from atst.forms.readiness import ReadinessForm
from atst.forms.review import ReviewForm from atst.forms.review import ReviewForm
import tornado.httputil import tornado.httputil
from tornado.httpclient import HTTPError
class RequestNew(BaseHandler): class RequestNew(BaseHandler):
@ -46,14 +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):
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) response = yield self.create_or_update_request(form.data, self.request_id())
if response.ok: if response.ok:
where = self.application.default_router.reverse_url('request_form', str(screen + 1)) url = self.application.default_router.reverse_url('request_form', str(screen + 1))
where = '{}?request_id={}'.format(url, response.json['id'])
self.redirect(where) self.redirect(where)
else: else:
self.set_status(response.code) self.set_status(response.code)
@ -61,10 +63,18 @@ class RequestNew(BaseHandler):
self.show_form(screen, form) self.show_form(screen, form)
@tornado.web.authenticated @tornado.web.authenticated
def get(self, screen = 1): @tornado.gen.coroutine
self.show_form(screen=screen) def get(self, screen=1):
form = None
request_id = self.request_id()
if request_id:
request = yield self.get_request(request_id)
form_data = request['body'] if request else {}
from pprint import pprint; pprint(form_data)
form = self.screens[ int(screen) - 1 ]['form'](data=form_data)
self.show_form(screen=screen, form=form)
def show_form(self, screen = 1, form = None): def show_form(self, screen=1, 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),
@ -75,11 +85,30 @@ class RequestNew(BaseHandler):
next_screen = int(screen) + 1 ) next_screen = int(screen) + 1 )
@tornado.gen.coroutine @tornado.gen.coroutine
def create_or_update_request(self, form_data): def get_request(self, request_id):
# TODO: Check session for existing form, and send a PATCH instead if it exists. try:
request = yield self.requests_client.get('/requests/{}'.format(request_id))
except HTTPError as http_error:
request = None
return request.json
@tornado.gen.coroutine
def create_or_update_request(self, form_data, request_id=None):
request_data = { request_data = {
'creator_id': '9cb348f0-8102-4962-88c4-dac8180c904c', 'creator_id': '9cb348f0-8102-4962-88c4-dac8180c904c',
'request': form_data 'request': form_data
} }
response = yield self.requests_client.post('/requests', json=request_data) if request_id:
response = yield self.requests_client.patch(
'/requests/{}'.format(request_id), request_data)
else:
response = yield self.requests_client.post(
'/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