Save request id in query param
This commit is contained in:
parent
234e1d344e
commit
62a5d4a983
@ -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):
|
||||||
@ -51,9 +52,10 @@ class RequestNew(BaseHandler):
|
|||||||
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,8 +63,16 @@ class RequestNew(BaseHandler):
|
|||||||
self.show_form(screen, form)
|
self.show_form(screen, form)
|
||||||
|
|
||||||
@tornado.web.authenticated
|
@tornado.web.authenticated
|
||||||
|
@tornado.gen.coroutine
|
||||||
def get(self, screen=1):
|
def get(self, screen=1):
|
||||||
self.show_form(screen=screen)
|
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:
|
||||||
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user