mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-12 20:43:02 +00:00
Show error messages on spawn form
when spawning fails instead of 500
This commit is contained in:
@@ -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)
|
||||
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user