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.
|
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
|
@web.authenticated
|
||||||
def get(self):
|
def get(self):
|
||||||
"""GET renders form for spawning with user-specified options"""
|
"""GET renders form for spawning with user-specified options"""
|
||||||
@@ -64,11 +72,7 @@ class SpawnHandler(BaseHandler):
|
|||||||
self.redirect(url)
|
self.redirect(url)
|
||||||
return
|
return
|
||||||
if user.spawner.options_form:
|
if user.spawner.options_form:
|
||||||
html = self.render_template('spawn.html',
|
self.finish(self._render_form())
|
||||||
user=self.get_current_user(),
|
|
||||||
spawner_options_form=user.spawner.options_form,
|
|
||||||
)
|
|
||||||
self.finish(html)
|
|
||||||
else:
|
else:
|
||||||
# not running, no form. Trigger spawn.
|
# not running, no form. Trigger spawn.
|
||||||
url = url_path_join(self.base_url, 'user', user.name)
|
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():
|
for key, byte_list in self.request.files.items():
|
||||||
form_options["%s_file"%key] = byte_list
|
form_options["%s_file"%key] = byte_list
|
||||||
options = user.spawner.options_from_form(form_options)
|
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)
|
self.set_login_cookie(user)
|
||||||
url = user.server.base_url
|
url = user.server.base_url
|
||||||
self.redirect(url)
|
self.redirect(url)
|
||||||
|
@@ -7,6 +7,11 @@
|
|||||||
<h1>Spawner options</h1>
|
<h1>Spawner options</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="row col-sm-offset-2 col-sm-8">
|
<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">
|
<form enctype="multipart/form-data" id="spawn_form" action="{{base_url}}spawn" method="post" role="form">
|
||||||
{{spawner_options_form}}
|
{{spawner_options_form}}
|
||||||
<br>
|
<br>
|
||||||
|
Reference in New Issue
Block a user