Use black for formatting
This commit is contained in:
@@ -4,54 +4,52 @@ from json import dumps, loads
|
||||
|
||||
|
||||
class ApiClient(object):
|
||||
|
||||
def __init__(self, base_url, api_version=None, validate_cert=True):
|
||||
self.base_url = base_url
|
||||
if api_version:
|
||||
self.base_url = f'{base_url}/api/{api_version}'
|
||||
self.base_url = f"{base_url}/api/{api_version}"
|
||||
self.client = AsyncHTTPClient()
|
||||
self.validate_cert = validate_cert
|
||||
|
||||
@tornado.gen.coroutine
|
||||
def get(self, path, **kwargs):
|
||||
return (yield self.make_request('GET', self.base_url + path, **kwargs))
|
||||
return (yield self.make_request("GET", self.base_url + path, **kwargs))
|
||||
|
||||
@tornado.gen.coroutine
|
||||
def put(self, path, **kwargs):
|
||||
return (yield self.make_request('PUT', self.base_url + path, **kwargs))
|
||||
return (yield self.make_request("PUT", self.base_url + path, **kwargs))
|
||||
|
||||
@tornado.gen.coroutine
|
||||
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))
|
||||
return (yield self.make_request("PATCH", self.base_url + path, **kwargs))
|
||||
|
||||
@tornado.gen.coroutine
|
||||
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))
|
||||
|
||||
@tornado.gen.coroutine
|
||||
def make_request(self, method, url, **kwargs):
|
||||
# If 'json' kwarg is specified, serialize it to 'body' and update
|
||||
# the Content-Type.
|
||||
if 'json' in kwargs:
|
||||
kwargs['body'] = dumps(kwargs['json'])
|
||||
del kwargs['json']
|
||||
headers = kwargs.get('headers', {})
|
||||
headers['Content-Type'] = 'application/json'
|
||||
kwargs['headers'] = headers
|
||||
if not 'validate_cert' in kwargs:
|
||||
kwargs['validate_cert'] = self.validate_cert
|
||||
if "json" in kwargs:
|
||||
kwargs["body"] = dumps(kwargs["json"])
|
||||
del kwargs["json"]
|
||||
headers = kwargs.get("headers", {})
|
||||
headers["Content-Type"] = "application/json"
|
||||
kwargs["headers"] = headers
|
||||
if not "validate_cert" in kwargs:
|
||||
kwargs["validate_cert"] = self.validate_cert
|
||||
|
||||
response = yield self.client.fetch(
|
||||
url, method=method, **kwargs)
|
||||
response = yield self.client.fetch(url, method=method, **kwargs)
|
||||
return self.adapt_response(response)
|
||||
|
||||
def adapt_response(self, response):
|
||||
if 'application/json' in response.headers['Content-Type']:
|
||||
if "application/json" in response.headers["Content-Type"]:
|
||||
json = loads(response.body)
|
||||
setattr(response, 'json', json)
|
||||
setattr(response, 'ok', 200 <= response.code < 300)
|
||||
setattr(response, "json", json)
|
||||
setattr(response, "ok", 200 <= response.code < 300)
|
||||
return response
|
||||
|
60
atst/app.py
60
atst/app.py
@@ -20,14 +20,14 @@ def make_app(config, deps, **kwargs):
|
||||
|
||||
routes = [
|
||||
url(r"/", Home, {"page": "login"}, name="main"),
|
||||
url(
|
||||
r"/login",
|
||||
Login,
|
||||
{"authnid_client": deps["authnid_client"]},
|
||||
name="login",
|
||||
),
|
||||
url(r"/login", Login, {"authnid_client": deps["authnid_client"]}, name="login"),
|
||||
url(r"/home", MainHandler, {"page": "home"}, name="home"),
|
||||
url( r"/workspaces/blank", MainHandler, {'page': 'workspaces_blank'}, name='workspaces_blank' ),
|
||||
url(
|
||||
r"/workspaces/blank",
|
||||
MainHandler,
|
||||
{"page": "workspaces_blank"},
|
||||
name="workspaces_blank",
|
||||
),
|
||||
url(
|
||||
r"/workspaces",
|
||||
Workspace,
|
||||
@@ -37,13 +37,15 @@ def make_app(config, deps, **kwargs):
|
||||
url(
|
||||
r"/requests",
|
||||
Request,
|
||||
{"page": "requests", 'requests_client': deps['requests_client']},
|
||||
name="requests"),
|
||||
{"page": "requests", "requests_client": deps["requests_client"]},
|
||||
name="requests",
|
||||
),
|
||||
url(
|
||||
r"/requests/new",
|
||||
RequestNew,
|
||||
{"page": "requests_new", "requests_client": deps["requests_client"]},
|
||||
name="request_new"),
|
||||
name="request_new",
|
||||
),
|
||||
url(
|
||||
r"/requests/new/([0-9])",
|
||||
RequestNew,
|
||||
@@ -67,12 +69,11 @@ def make_app(config, deps, **kwargs):
|
||||
app = tornado.web.Application(
|
||||
routes,
|
||||
login_url="/",
|
||||
|
||||
template_path = home.child('templates'),
|
||||
static_path = home.child('static'),
|
||||
template_path=home.child("templates"),
|
||||
static_path=home.child("static"),
|
||||
cookie_secret=config["default"]["COOKIE_SECRET"],
|
||||
debug=config['default'].getboolean('DEBUG'),
|
||||
**kwargs
|
||||
debug=config["default"].getboolean("DEBUG"),
|
||||
**kwargs,
|
||||
)
|
||||
app.config = config
|
||||
return app
|
||||
@@ -80,23 +81,30 @@ def make_app(config, deps, **kwargs):
|
||||
|
||||
def make_deps(config):
|
||||
# we do not want to do SSL verify services in test and development
|
||||
validate_cert = ENV == 'production'
|
||||
validate_cert = ENV == "production"
|
||||
return {
|
||||
'authz_client': ApiClient(config["default"]["AUTHZ_BASE_URL"], api_version='v1', validate_cert=validate_cert),
|
||||
'authnid_client': ApiClient(config["default"]["AUTHNID_BASE_URL"], api_version='v1', validate_cert=validate_cert),
|
||||
'requests_client': ApiClient(config["default"]["REQUESTS_QUEUE_BASE_URL"], api_version='v1', validate_cert=validate_cert)
|
||||
"authz_client": ApiClient(
|
||||
config["default"]["AUTHZ_BASE_URL"],
|
||||
api_version="v1",
|
||||
validate_cert=validate_cert,
|
||||
),
|
||||
"authnid_client": ApiClient(
|
||||
config["default"]["AUTHNID_BASE_URL"],
|
||||
api_version="v1",
|
||||
validate_cert=validate_cert,
|
||||
),
|
||||
"requests_client": ApiClient(
|
||||
config["default"]["REQUESTS_QUEUE_BASE_URL"],
|
||||
api_version="v1",
|
||||
validate_cert=validate_cert,
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def make_config():
|
||||
BASE_CONFIG_FILENAME = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
"../config/base.ini"
|
||||
)
|
||||
BASE_CONFIG_FILENAME = os.path.join(os.path.dirname(__file__), "../config/base.ini")
|
||||
ENV_CONFIG_FILENAME = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
"../config/",
|
||||
"{}.ini".format(ENV.lower())
|
||||
os.path.dirname(__file__), "../config/", "{}.ini".format(ENV.lower())
|
||||
)
|
||||
config = ConfigParser()
|
||||
|
||||
|
@@ -2,7 +2,8 @@ from wtforms.fields.html5 import IntegerField
|
||||
from wtforms.validators import Required, ValidationError
|
||||
from wtforms_tornado import Form
|
||||
|
||||
|
||||
class DateForm(Form):
|
||||
month = IntegerField('Month', validators=[Required()])
|
||||
day = IntegerField('Day', validators=[Required()])
|
||||
year = IntegerField('Year', validators=[Required()])
|
||||
month = IntegerField("Month", validators=[Required()])
|
||||
day = IntegerField("Day", validators=[Required()])
|
||||
year = IntegerField("Year", validators=[Required()])
|
||||
|
@@ -1,4 +1,5 @@
|
||||
from wtforms_tornado import Form
|
||||
|
||||
|
||||
class FundingForm(Form):
|
||||
pass
|
||||
|
@@ -1,4 +1,5 @@
|
||||
from wtforms_tornado import Form
|
||||
|
||||
|
||||
class OrganizationInfoForm(Form):
|
||||
pass
|
||||
|
@@ -1,4 +1,5 @@
|
||||
from wtforms_tornado import Form
|
||||
|
||||
|
||||
class ReadinessForm(Form):
|
||||
pass
|
||||
|
@@ -1,44 +1,73 @@
|
||||
from wtforms.fields.html5 import IntegerField
|
||||
from wtforms.fields import RadioField, StringField, SelectField, TextAreaField, FormField
|
||||
from wtforms.fields import (
|
||||
RadioField,
|
||||
StringField,
|
||||
SelectField,
|
||||
TextAreaField,
|
||||
FormField,
|
||||
)
|
||||
from wtforms.validators import Required, ValidationError
|
||||
from wtforms_tornado import Form
|
||||
from .date import DateForm
|
||||
|
||||
|
||||
class RequestForm(Form):
|
||||
application_name = StringField('Application name', validators=[Required()])
|
||||
application_description = TextAreaField('Application description', validators=[Required()])
|
||||
dollar_value = IntegerField('Estimated dollar value of use', validators=[Required()])
|
||||
input_estimate = SelectField('How did you arrive at this estimate?', validators=[Required()],
|
||||
choices=[('','- Select -'),
|
||||
('calculator','CSP usage calculator'),
|
||||
('B','Option B'),
|
||||
('C','Option C') ])
|
||||
application_name = StringField("Application name", validators=[Required()])
|
||||
application_description = TextAreaField(
|
||||
"Application description", validators=[Required()]
|
||||
)
|
||||
dollar_value = IntegerField(
|
||||
"Estimated dollar value of use", validators=[Required()]
|
||||
)
|
||||
input_estimate = SelectField(
|
||||
"How did you arrive at this estimate?",
|
||||
validators=[Required()],
|
||||
choices=[
|
||||
("", "- Select -"),
|
||||
("calculator", "CSP usage calculator"),
|
||||
("B", "Option B"),
|
||||
("C", "Option C"),
|
||||
],
|
||||
)
|
||||
# no way to apply a label to a whole nested form like this
|
||||
date_start = FormField(DateForm)
|
||||
period_of_performance = SelectField('Desired period of performance', validators=[Required()],
|
||||
choices=[('','- Select -'),
|
||||
('value1','30 days'),
|
||||
('value2','60 days'),
|
||||
('value3','90 days') ])
|
||||
classification_level = RadioField('Classification level', validators=[Required()],
|
||||
choices=[('unclassified', 'Unclassified'),
|
||||
('secret', 'Secret'),
|
||||
('top-secret', 'Top Secret') ])
|
||||
primary_service_branch = StringField('Primary service branch usage', validators=[Required()])
|
||||
cloud_model = RadioField('Cloud model service', validators=[Required()],
|
||||
choices=[('iaas', 'IaaS'),
|
||||
('paas', 'PaaS'),
|
||||
('both', 'Both') ])
|
||||
number_of_cores = IntegerField('Number of cores', validators=[Required()])
|
||||
total_ram = IntegerField('Total RAM', validators=[Required()])
|
||||
object_storage = IntegerField('Total object storage', validators=[Required()])
|
||||
server_storage = IntegerField('Total server storage', validators=[Required()])
|
||||
total_active_users = IntegerField('Total active users', validators=[Required()])
|
||||
total_peak_users = IntegerField('Total peak users', validators=[Required()])
|
||||
total_requests = IntegerField('Total requests', validators=[Required()])
|
||||
total_environments = IntegerField('Total environments', validators=[Required()])
|
||||
period_of_performance = SelectField(
|
||||
"Desired period of performance",
|
||||
validators=[Required()],
|
||||
choices=[
|
||||
("", "- Select -"),
|
||||
("value1", "30 days"),
|
||||
("value2", "60 days"),
|
||||
("value3", "90 days"),
|
||||
],
|
||||
)
|
||||
classification_level = RadioField(
|
||||
"Classification level",
|
||||
validators=[Required()],
|
||||
choices=[
|
||||
("unclassified", "Unclassified"),
|
||||
("secret", "Secret"),
|
||||
("top-secret", "Top Secret"),
|
||||
],
|
||||
)
|
||||
primary_service_branch = StringField(
|
||||
"Primary service branch usage", validators=[Required()]
|
||||
)
|
||||
cloud_model = RadioField(
|
||||
"Cloud model service",
|
||||
validators=[Required()],
|
||||
choices=[("iaas", "IaaS"), ("paas", "PaaS"), ("both", "Both")],
|
||||
)
|
||||
number_of_cores = IntegerField("Number of cores", validators=[Required()])
|
||||
total_ram = IntegerField("Total RAM", validators=[Required()])
|
||||
object_storage = IntegerField("Total object storage", validators=[Required()])
|
||||
server_storage = IntegerField("Total server storage", validators=[Required()])
|
||||
total_active_users = IntegerField("Total active users", validators=[Required()])
|
||||
total_peak_users = IntegerField("Total peak users", validators=[Required()])
|
||||
total_requests = IntegerField("Total requests", validators=[Required()])
|
||||
total_environments = IntegerField("Total environments", validators=[Required()])
|
||||
|
||||
# this is just an example validation; obviously this is wrong.
|
||||
def validate_total_ram(self,field):
|
||||
def validate_total_ram(self, field):
|
||||
if (field.data % 2) != 0:
|
||||
raise ValidationError("RAM must be in increments of 2.")
|
||||
|
@@ -1,4 +1,5 @@
|
||||
from wtforms_tornado import Form
|
||||
|
||||
|
||||
class ReviewForm(Form):
|
||||
pass
|
||||
|
@@ -2,34 +2,31 @@ from webassets import Environment, Bundle
|
||||
import tornado.web
|
||||
from atst.home import home
|
||||
|
||||
assets = Environment(
|
||||
directory = home.child('scss'),
|
||||
url = '/static')
|
||||
css = Bundle(
|
||||
'atat.scss',
|
||||
filters = 'scss',
|
||||
output = '../static/assets/out.css',
|
||||
depends = ('**/*.scss'))
|
||||
assets = Environment(directory=home.child("scss"), url="/static")
|
||||
css = Bundle(
|
||||
"atat.scss",
|
||||
filters="scss",
|
||||
output="../static/assets/out.css",
|
||||
depends=("**/*.scss"),
|
||||
)
|
||||
|
||||
assets.register( 'css', css )
|
||||
helpers = {
|
||||
'assets': assets,
|
||||
}
|
||||
assets.register("css", css)
|
||||
helpers = {"assets": assets}
|
||||
|
||||
|
||||
class BaseHandler(tornado.web.RequestHandler):
|
||||
def get_template_namespace(self):
|
||||
ns = super(BaseHandler, self).get_template_namespace()
|
||||
helpers['config'] = self.application.config
|
||||
helpers["config"] = self.application.config
|
||||
ns.update(helpers)
|
||||
return ns
|
||||
|
||||
def get_current_user(self):
|
||||
if self.get_secure_cookie('atst'):
|
||||
return '9cb348f0-8102-4962-88c4-dac8180c904c'
|
||||
if self.get_secure_cookie("atst"):
|
||||
return "9cb348f0-8102-4962-88c4-dac8180c904c"
|
||||
else:
|
||||
return False
|
||||
|
||||
# this is a temporary implementation until we have real sessions
|
||||
def _start_session(self):
|
||||
self.set_secure_cookie('atst', 'valid-user-session')
|
||||
self.set_secure_cookie("atst", "valid-user-session")
|
||||
|
@@ -1,11 +1,12 @@
|
||||
from atst.handler import BaseHandler
|
||||
|
||||
|
||||
class Dev(BaseHandler):
|
||||
def initialize(self, action):
|
||||
self.action = action
|
||||
|
||||
def get(self):
|
||||
if self.action == 'login':
|
||||
if self.action == "login":
|
||||
self._login()
|
||||
|
||||
def _login(self):
|
||||
|
@@ -1,9 +1,9 @@
|
||||
from atst.handler import BaseHandler
|
||||
|
||||
class Home(BaseHandler):
|
||||
|
||||
class Home(BaseHandler):
|
||||
def initialize(self, page):
|
||||
self.page = page
|
||||
|
||||
def get(self):
|
||||
self.render( '%s.html.to' % self.page, page = self.page )
|
||||
self.render("%s.html.to" % self.page, page=self.page)
|
||||
|
@@ -3,7 +3,6 @@ from atst.handler import BaseHandler
|
||||
|
||||
|
||||
class Login(BaseHandler):
|
||||
|
||||
def initialize(self, authnid_client):
|
||||
self.authnid_client = authnid_client
|
||||
|
||||
|
@@ -1,11 +1,11 @@
|
||||
import tornado
|
||||
from atst.handler import BaseHandler
|
||||
|
||||
class MainHandler(BaseHandler):
|
||||
|
||||
class MainHandler(BaseHandler):
|
||||
def initialize(self, page):
|
||||
self.page = page
|
||||
|
||||
@tornado.web.authenticated
|
||||
def get(self):
|
||||
self.render( '%s.html.to' % self.page, page = self.page )
|
||||
self.render("%s.html.to" % self.page, page=self.page)
|
||||
|
@@ -2,43 +2,45 @@ import tornado
|
||||
from atst.handler import BaseHandler
|
||||
|
||||
mock_requests = [
|
||||
{
|
||||
'order_id' : 36552612,
|
||||
'date' : '5/17/2018',
|
||||
'is_new' : True,
|
||||
'full_name' : 'Friedrich Straat',
|
||||
'app_count' : 2,
|
||||
'status' : 'Pending'
|
||||
},
|
||||
{
|
||||
'order_id' : 87362910,
|
||||
'date' : '10/2/2017',
|
||||
'is_new' : False,
|
||||
'full_name' : 'Pietro Quirinis',
|
||||
'app_count' : 1,
|
||||
'status' : 'Complete'
|
||||
},
|
||||
{
|
||||
'order_id' : 29938172,
|
||||
'date' : '1/7/2017',
|
||||
'is_new' : False,
|
||||
'full_name' : 'Marina Borsetti',
|
||||
'app_count' : 1,
|
||||
'status' : 'Denied'
|
||||
},
|
||||
]
|
||||
{
|
||||
"order_id": 36552612,
|
||||
"date": "5/17/2018",
|
||||
"is_new": True,
|
||||
"full_name": "Friedrich Straat",
|
||||
"app_count": 2,
|
||||
"status": "Pending",
|
||||
},
|
||||
{
|
||||
"order_id": 87362910,
|
||||
"date": "10/2/2017",
|
||||
"is_new": False,
|
||||
"full_name": "Pietro Quirinis",
|
||||
"app_count": 1,
|
||||
"status": "Complete",
|
||||
},
|
||||
{
|
||||
"order_id": 29938172,
|
||||
"date": "1/7/2017",
|
||||
"is_new": False,
|
||||
"full_name": "Marina Borsetti",
|
||||
"app_count": 1,
|
||||
"status": "Denied",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def map_request(request):
|
||||
return {
|
||||
'order_id': request['id'],
|
||||
'is_new': False,
|
||||
'status': 'Pending',
|
||||
'app_count': 1,
|
||||
'is_new': False,
|
||||
'date': '',
|
||||
'full_name': 'Richard Howard'
|
||||
"order_id": request["id"],
|
||||
"is_new": False,
|
||||
"status": "Pending",
|
||||
"app_count": 1,
|
||||
"is_new": False,
|
||||
"date": "",
|
||||
"full_name": "Richard Howard",
|
||||
}
|
||||
|
||||
|
||||
class Request(BaseHandler):
|
||||
def initialize(self, page, requests_client):
|
||||
self.page = page
|
||||
@@ -48,7 +50,8 @@ class Request(BaseHandler):
|
||||
@tornado.gen.coroutine
|
||||
def get(self):
|
||||
response = yield self.requests_client.get(
|
||||
'/users/{}/requests'.format(self.get_current_user()))
|
||||
requests = response.json['requests']
|
||||
"/users/{}/requests".format(self.get_current_user())
|
||||
)
|
||||
requests = response.json["requests"]
|
||||
mapped_requests = [map_request(request) for request in requests]
|
||||
self.render('requests.html.to', page=self.page, requests=mapped_requests)
|
||||
self.render("requests.html.to", page=self.page, requests=mapped_requests)
|
||||
|
@@ -11,35 +11,21 @@ from tornado.httpclient import HTTPError
|
||||
|
||||
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,
|
||||
}
|
||||
]
|
||||
{
|
||||
"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, requests_client):
|
||||
self.page = page
|
||||
@@ -50,12 +36,15 @@ class RequestNew(BaseHandler):
|
||||
def post(self, screen=1, request_id=None):
|
||||
self.check_xsrf_cookie()
|
||||
screen = int(screen)
|
||||
form = self.screens[ screen - 1 ]['form'](self.request.arguments)
|
||||
form = self.screens[screen - 1]["form"](self.request.arguments)
|
||||
if form.validate():
|
||||
response = yield self.create_or_update_request(form.data, request_id)
|
||||
if response.ok:
|
||||
where = self.application.default_router.reverse_url(
|
||||
'request_form_update', str(screen + 1), request_id or response.json['id'])
|
||||
"request_form_update",
|
||||
str(screen + 1),
|
||||
request_id or response.json["id"],
|
||||
)
|
||||
self.redirect(where)
|
||||
else:
|
||||
self.set_status(response.code)
|
||||
@@ -69,39 +58,39 @@ class RequestNew(BaseHandler):
|
||||
if request_id:
|
||||
request = yield self.get_request(request_id)
|
||||
if request.ok:
|
||||
form_data = request.json['body'] if request else {}
|
||||
form = self.screens[ int(screen) - 1 ]['form'](data=form_data)
|
||||
form_data = request.json["body"] if request else {}
|
||||
form = self.screens[int(screen) - 1]["form"](data=form_data)
|
||||
|
||||
self.show_form(screen=screen, form=form, request_id=request_id)
|
||||
|
||||
def show_form(self, screen=1, form=None, request_id=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,
|
||||
request_id=request_id)
|
||||
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,
|
||||
request_id=request_id,
|
||||
)
|
||||
|
||||
@tornado.gen.coroutine
|
||||
def get_request(self, request_id):
|
||||
request = yield self.requests_client.get(
|
||||
'/users/{}/requests/{}'.format(self.get_current_user(), request_id),
|
||||
raise_error=False)
|
||||
"/users/{}/requests/{}".format(self.get_current_user(), request_id),
|
||||
raise_error=False,
|
||||
)
|
||||
return request
|
||||
|
||||
@tornado.gen.coroutine
|
||||
def create_or_update_request(self, form_data, request_id=None):
|
||||
request_data = {
|
||||
'creator_id': self.get_current_user(),
|
||||
'request': form_data
|
||||
}
|
||||
request_data = {"creator_id": self.get_current_user(), "request": form_data}
|
||||
if request_id:
|
||||
response = yield self.requests_client.patch(
|
||||
'/requests/{}'.format(request_id), json=request_data)
|
||||
"/requests/{}".format(request_id), json=request_data
|
||||
)
|
||||
else:
|
||||
response = yield self.requests_client.post(
|
||||
'/requests', json=request_data)
|
||||
response = yield self.requests_client.post("/requests", json=request_data)
|
||||
return response
|
||||
|
@@ -3,17 +3,15 @@ import tornado
|
||||
|
||||
mock_workspaces = [
|
||||
{
|
||||
'name' : 'Unclassified IaaS and PaaS for Defense Digital Service (DDS)',
|
||||
'id': '5966187a-eff9-44c3-aa15-4de7a65ac7ff',
|
||||
'task_order' : {
|
||||
'number' : 123456,
|
||||
},
|
||||
'user_count' : 23,
|
||||
"name": "Unclassified IaaS and PaaS for Defense Digital Service (DDS)",
|
||||
"id": "5966187a-eff9-44c3-aa15-4de7a65ac7ff",
|
||||
"task_order": {"number": 123456},
|
||||
"user_count": 23,
|
||||
}
|
||||
]
|
||||
|
||||
class Workspace(BaseHandler):
|
||||
|
||||
class Workspace(BaseHandler):
|
||||
def initialize(self, page, authz_client):
|
||||
self.page = page
|
||||
self.authz_client = authz_client
|
||||
@@ -21,4 +19,4 @@ class Workspace(BaseHandler):
|
||||
@tornado.gen.coroutine
|
||||
@tornado.web.authenticated
|
||||
def get(self):
|
||||
self.render( 'workspaces.html.to', page = self.page, workspaces = mock_workspaces )
|
||||
self.render("workspaces.html.to", page=self.page, workspaces=mock_workspaces)
|
||||
|
@@ -1,3 +1,3 @@
|
||||
from unipath import Path
|
||||
|
||||
home = Path( __file__ ).parent.parent
|
||||
home = Path(__file__).parent.parent
|
||||
|
Reference in New Issue
Block a user