mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00
Fix DB scheduling on mariaDB
This commit is contained in:
@@ -3,13 +3,13 @@ import tempfile
|
||||
import random
|
||||
import zlib
|
||||
import json
|
||||
import multiprocessing
|
||||
|
||||
from flask import request, flash, redirect, url_for, session, render_template
|
||||
|
||||
from EntranceRandomizer import parse_arguments
|
||||
from Main import main as ERmain
|
||||
from Main import get_seed, seeddigits
|
||||
import pickle
|
||||
|
||||
from .models import *
|
||||
from WebHostLib import app
|
||||
@@ -35,15 +35,20 @@ def generate(race=False):
|
||||
elif len(gen_options) > app.config["MAX_ROLL"]:
|
||||
flash(f"Sorry, generating of multiworlds is limited to {app.config['MAX_ROLL']} players for now. "
|
||||
f"If you have a larger group, please generate it yourself and upload it.")
|
||||
else:
|
||||
|
||||
gen = Generation(options={name: vars(options) for name, options in gen_options.items()},
|
||||
# convert to json compatible
|
||||
meta={"race": race, "owner": session["_id"].int}, state=STATE_QUEUED,
|
||||
owner=session["_id"])
|
||||
elif len(gen_options) >= app.config["JOB_THRESHOLD"]:
|
||||
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 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)
|
||||
return redirect(url_for("view_seed", seed=seed_id))
|
||||
|
||||
return render_template("generate.html", race=race)
|
||||
|
||||
|
||||
@@ -89,8 +94,11 @@ def gen_game(gen_options, race=False, owner=None, sid=None):
|
||||
|
||||
return upload_to_db(target.name, owner, sid)
|
||||
except BaseException:
|
||||
with db_session:
|
||||
Generation.get(id=sid).state = STATE_ERROR
|
||||
if sid:
|
||||
with db_session:
|
||||
gen = Generation.get(id=sid)
|
||||
if gen is not None:
|
||||
gen.state = STATE_ERROR
|
||||
raise
|
||||
|
||||
|
||||
@@ -127,8 +135,14 @@ def upload_to_db(folder, owner, sid):
|
||||
flash(e)
|
||||
if multidata:
|
||||
with db_session:
|
||||
seed = Seed(multidata=multidata, spoiler=spoiler, patches=patches, owner=owner, id=sid)
|
||||
if sid:
|
||||
seed = Seed(multidata=multidata, spoiler=spoiler, patches=patches, owner=owner, id=sid)
|
||||
else:
|
||||
seed = Seed(multidata=multidata, spoiler=spoiler, patches=patches, owner=owner)
|
||||
for patch in patches:
|
||||
patch.seed = seed
|
||||
Generation.get(id=sid).delete()
|
||||
if sid:
|
||||
gen = Generation.get(id=sid)
|
||||
if gen is not None:
|
||||
gen.delete()
|
||||
return seed.id
|
||||
|
Reference in New Issue
Block a user