Show error messages on spawn form

when spawning fails

instead of 500
This commit is contained in:
Min RK
2016-01-22 16:02:11 +01:00
parent 818510c2ca
commit ef40bd230e
2 changed files with 20 additions and 6 deletions

View File

@@ -54,6 +54,14 @@ class SpawnHandler(BaseHandler):
Only enabled when Spawner.options_form is defined.
"""
def _render_form(self, message=''):
user = self.get_current_user()
return self.render_template('spawn.html',
user=user,
spawner_options_form=user.spawner.options_form,
error_message=message,
)
@web.authenticated
def get(self):
"""GET renders form for spawning with user-specified options"""
@@ -64,11 +72,7 @@ class SpawnHandler(BaseHandler):
self.redirect(url)
return
if user.spawner.options_form:
html = self.render_template('spawn.html',
user=self.get_current_user(),
spawner_options_form=user.spawner.options_form,
)
self.finish(html)
self.finish(self._render_form())
else:
# not running, no form. Trigger spawn.
url = url_path_join(self.base_url, 'user', user.name)
@@ -90,7 +94,12 @@ class SpawnHandler(BaseHandler):
for key, byte_list in self.request.files.items():
form_options["%s_file"%key] = byte_list
options = user.spawner.options_from_form(form_options)
yield self.spawn_single_user(user, options=options)
try:
yield self.spawn_single_user(user, options=options)
except Exception as e:
self.log.error("Failed to spawn single-user server with form", exc_info=True)
self.finish(self._render_form(str(e)))
return
self.set_login_cookie(user)
url = user.server.base_url
self.redirect(url)

View File

@@ -7,6 +7,11 @@
<h1>Spawner options</h1>
</div>
<div class="row col-sm-offset-2 col-sm-8">
{% if error_message %}
<p class="spawn-error-msg text-danger">
Error: {{error_message}}
</p>
{% endif %}
<form enctype="multipart/form-data" id="spawn_form" action="{{base_url}}spawn" method="post" role="form">
{{spawner_options_form}}
<br>