parent
1e480648b9
commit
cea83559f0
|
@ -52,6 +52,34 @@ def generate(race=False):
|
||||||
return render_template("generate.html", race=race)
|
return render_template("generate.html", race=race)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/api/generate', methods=['POST'])
|
||||||
|
def generate_api():
|
||||||
|
try:
|
||||||
|
json_data = request.get_json()
|
||||||
|
if json_data:
|
||||||
|
# example: options = {"player1weights" : {<weightsdata>}}
|
||||||
|
options = json_data["weights"]
|
||||||
|
race = bool(json_data["race"])
|
||||||
|
results, gen_options = roll_yamls(options)
|
||||||
|
if any(type(result) == str for result in results.values()):
|
||||||
|
return {"text": str(results),
|
||||||
|
"detail": results}, 400
|
||||||
|
|
||||||
|
else:
|
||||||
|
gen = Generation(
|
||||||
|
options=pickle.dumps({name: vars(options) for name, options in gen_options.items()}),
|
||||||
|
# convert to json compatible
|
||||||
|
meta=pickle.dumps({"race": race}), state=STATE_QUEUED,
|
||||||
|
owner=session["_id"])
|
||||||
|
commit()
|
||||||
|
return {"text" : f"Generation of seed {gen.id} started succesfully.",
|
||||||
|
"detail": gen.id}, 201
|
||||||
|
else:
|
||||||
|
return {"text": "POST data empty or incorrectly headered."}, 400
|
||||||
|
except Exception as e:
|
||||||
|
return {"text": "Uncaught Exception:" + str(e)}, 500
|
||||||
|
|
||||||
|
|
||||||
def gen_game(gen_options, race=False, owner=None, sid=None):
|
def gen_game(gen_options, race=False, owner=None, sid=None):
|
||||||
try:
|
try:
|
||||||
target = tempfile.TemporaryDirectory()
|
target = tempfile.TemporaryDirectory()
|
||||||
|
@ -116,6 +144,19 @@ def wait_seed(seed: UUID):
|
||||||
return "Generation failed, please retry."
|
return "Generation failed, please retry."
|
||||||
return render_template("wait_seed.html", seed_id=seed_id)
|
return render_template("wait_seed.html", seed_id=seed_id)
|
||||||
|
|
||||||
|
@app.route('/api/status/<suuid:seed>')
|
||||||
|
def wait_seed_api(seed: UUID):
|
||||||
|
seed_id = seed
|
||||||
|
seed = Seed.get(id=seed_id)
|
||||||
|
if seed:
|
||||||
|
return {"text" : "Generation done"}, 201
|
||||||
|
generation = Generation.get(id=seed_id)
|
||||||
|
|
||||||
|
if not generation:
|
||||||
|
return {"text": "Generation not found"}, 404
|
||||||
|
elif generation.state == STATE_ERROR:
|
||||||
|
return {"text": "Generation failed"}, 500
|
||||||
|
return {"text": "Generation running"}, 202
|
||||||
|
|
||||||
def upload_to_db(folder, owner, sid):
|
def upload_to_db(folder, owner, sid):
|
||||||
patches = set()
|
patches = set()
|
||||||
|
|
Loading…
Reference in New Issue