diff --git a/WebHostLib/generate.py b/WebHostLib/generate.py index d8c78ee0..8d6aa077 100644 --- a/WebHostLib/generate.py +++ b/WebHostLib/generate.py @@ -45,8 +45,14 @@ def generate(race=False): return redirect(url_for("wait_seed", seed=gen.id)) else: - seed_id = gen_game({name: vars(options) for name, options in gen_options.items()}, - race=race, owner=session["_id"].int) + try: + seed_id = gen_game({name: vars(options) for name, options in gen_options.items()}, + race=race, owner=session["_id"].int) + except BaseException as e: + from .autolauncher import handle_generation_failure + handle_generation_failure(e) + return render_template("seedError.html", seed_error=(e.__class__.__name__ + ": "+ str(e))) + return redirect(url_for("viewSeed", seed=seed_id)) return render_template("generate.html", race=race) @@ -114,8 +120,7 @@ def wait_seed(seed: UUID): if not generation: return "Generation not found." elif generation.state == STATE_ERROR: - import html - return f"Generation failed, please retry.
{html.escape(generation.meta.decode())}" + return render_template("seedError.html", seed_error=generation.meta.decode()) return render_template("waitSeed.html", seed_id=seed_id) diff --git a/WebHostLib/templates/seedError.html b/WebHostLib/templates/seedError.html new file mode 100644 index 00000000..b0414f83 --- /dev/null +++ b/WebHostLib/templates/seedError.html @@ -0,0 +1,19 @@ +{% extends 'pageWrapper.html' %} +{% import "macros.html" as macros %} + +{% block head %} + Generation failed, please retry. + +{% endblock %} + +{% block body %} + {% include 'header/oceanHeader.html' %} +
+
+

Generation failed

+

please retry

+ {{ seed_error }} +
+
+ {% include 'islandFooter.html' %} +{% endblock %}