Files
atst/atst/handlers/request_new.py
2018-06-14 14:02:55 -04:00

69 lines
2.2 KiB
Python

import tornado
from atst.handler import BaseHandler
from atst.forms.request import RequestForm
from atst.forms.organization_info import OrganizationInfoForm
from atst.forms.funding import FundingForm
from atst.forms.readiness import ReadinessForm
from atst.forms.review import ReviewForm
import tornado.httputil
class RequestNew(BaseHandler):
screens = [
{ 'title' : 'Details of Use',
'form' : RequestForm,
'subitems' : [
{'title' : 'Application Details',
'id' : 'application-details'},
{'title' : 'Computation',
'id' : 'computation' },
{'title' : 'Storage',
'id' : 'storage' },
{'title' : 'Usage',
'id' : 'usage' },
]},
{
'title' : 'Organizational Info',
'form' : OrganizationInfoForm,
},
{
'title' : 'Funding/Contracting',
'form' : FundingForm,
},
{
'title' : 'Readiness Survey',
'form' : ReadinessForm,
},
{
'title' : 'Review & Submit',
'form' : ReviewForm,
}
]
def initialize(self, page):
self.page = page
@tornado.web.authenticated
def post(self, screen = 1):
self.check_xsrf_cookie()
screen = int(screen)
form = self.screens[ screen - 1 ]['form'](self.request.arguments)
if form.validate():
where = self.application.default_router.reverse_url('request_form', str(screen + 1))
self.redirect(where)
else:
self.show_form(screen, form)
@tornado.web.authenticated
def get(self, screen = 1):
self.show_form(screen=screen)
def show_form(self, screen = 1, form = None):
if not form:
form = self.screens[ int(screen) - 1 ]['form'](self.request.arguments)
self.render( 'requests/screen-%d.html.to' % int(screen),
f = form,
page = self.page,
screens = self.screens,
current = int(screen),
next_screen = int(screen) + 1 )