From cd1c38515b0e3475c7e3b032b75373deb5f8624d Mon Sep 17 00:00:00 2001 From: Fabian Dill Date: Wed, 17 Nov 2021 16:58:43 +0100 Subject: [PATCH] WebHost: add remaining and collect to options page --- WebHostLib/api/generate.py | 9 +++--- WebHostLib/generate.py | 16 ++++++++-- WebHostLib/templates/generate.html | 50 ++++++++++++++++++++++++++++-- 3 files changed, 64 insertions(+), 11 deletions(-) diff --git a/WebHostLib/api/generate.py b/WebHostLib/api/generate.py index b2caf4d7..2868a079 100644 --- a/WebHostLib/api/generate.py +++ b/WebHostLib/api/generate.py @@ -9,6 +9,7 @@ from pony.orm import commit from WebHostLib import app, Generation, STATE_QUEUED, Seed, STATE_ERROR from WebHostLib.check import get_yaml_data, roll_options +from WebHostLib.generate import get_meta @api_endpoints.route('/generate', methods=['POST']) @@ -35,9 +36,6 @@ def generate_api(): if "race" in json_data: race = bool(0 if json_data["race"] in {"false"} else int(json_data["race"])) - hint_cost = int(meta_options_source.get("hint_cost", 10)) - forfeit_mode = meta_options_source.get("forfeit_mode", "goal") - if not options: return {"text": "No options found. Expected file attachment or json weights." }, 400 @@ -45,7 +43,8 @@ def generate_api(): if len(options) > app.config["MAX_ROLL"]: return {"text": "Max size of multiworld exceeded", "detail": app.config["MAX_ROLL"]}, 409 - + meta = get_meta(meta_options_source) + meta["race"] = race results, gen_options = roll_options(options) if any(type(result) == str for result in results.values()): return {"text": str(results), @@ -54,7 +53,7 @@ def generate_api(): gen = Generation( options=pickle.dumps({name: vars(options) for name, options in gen_options.items()}), # convert to json compatible - meta=json.dumps({"race": race, "hint_cost": hint_cost, "forfeit_mode": forfeit_mode}), state=STATE_QUEUED, + meta=json.dumps(meta), state=STATE_QUEUED, owner=session["_id"]) commit() return {"text": f"Generation of seed {gen.id} started successfully.", diff --git a/WebHostLib/generate.py b/WebHostLib/generate.py index ac16d7c9..c6e2d7d8 100644 --- a/WebHostLib/generate.py +++ b/WebHostLib/generate.py @@ -20,6 +20,16 @@ from .check import get_yaml_data, roll_options from .upload import upload_zip_to_db +def get_meta(options_source: dict) -> dict: + meta = { + "hint_cost": int(options_source.get("hint_cost", 10)), + "forfeit_mode": options_source.get("forfeit_mode", "goal"), + "remaining_mode": options_source.get("forfeit_mode", "disabled"), + "collect_mode": options_source.get("collect_mode", "disabled"), + } + return meta + + @app.route('/generate', methods=['GET', 'POST']) @app.route('/generate/', methods=['GET', 'POST']) def generate(race=False): @@ -35,9 +45,9 @@ def generate(race=False): else: results, gen_options = roll_options(options) # get form data -> server settings - hint_cost = int(request.form.get("hint_cost", 10)) - forfeit_mode = request.form.get("forfeit_mode", "goal") - meta = {"race": race, "hint_cost": hint_cost, "forfeit_mode": forfeit_mode} + meta = get_meta(request.form) + meta["race"] = race + if race: meta["item_cheat"] = False meta["remaining"] = False diff --git a/WebHostLib/templates/generate.html b/WebHostLib/templates/generate.html index 72592167..9004bc48 100644 --- a/WebHostLib/templates/generate.html +++ b/WebHostLib/templates/generate.html @@ -34,7 +34,14 @@ - + + + + + + + + + + +
+ + (?) + +
+ + (?) + + + +
+ + (?) + + + +
(?)