From e005fb52f767b20654555577775902e0e685fb07 Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Thu, 12 Nov 2020 19:50:13 +0100 Subject: [PATCH] WebHost: report back generation errors to user --- WebHostLib/generate.py | 6 ++++-- WebHostLib/models.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/WebHostLib/generate.py b/WebHostLib/generate.py index 8889883e..a3397234 100644 --- a/WebHostLib/generate.py +++ b/WebHostLib/generate.py @@ -142,12 +142,13 @@ def gen_game(gen_options, race=False, owner=None, sid=None): ERmain(erargs, seed) return upload_to_db(target.name, owner, sid, race) - except BaseException: + except BaseException as e: if sid: with db_session: gen = Generation.get(id=sid) if gen is not None: gen.state = STATE_ERROR + gen.meta = (e.__class__.__name__ + ": "+ str(e)).encode() raise @@ -162,7 +163,8 @@ def wait_seed(seed: UUID): if not generation: return "Generation not found." elif generation.state == STATE_ERROR: - return "Generation failed, please retry." + import html + return f"Generation failed, please retry.
{html.escape(generation.meta.decode())}" return render_template("wait_seed.html", seed_id=seed_id) diff --git a/WebHostLib/models.py b/WebHostLib/models.py index d5e0f2b8..77bd6f2f 100644 --- a/WebHostLib/models.py +++ b/WebHostLib/models.py @@ -50,5 +50,5 @@ class Generation(db.Entity): id = PrimaryKey(UUID, default=uuid4) owner = Required(UUID) options = Required(bytes, lazy=True) # these didn't work as JSON on mariaDB, so they're getting pickled now - meta = Required(bytes, lazy=True) + meta = Required(bytes, lazy=True) # if state is -1 (error) this will contain an utf-8 encoded error message state = Required(int, default=0, index=True)