From 330fd9c97d520e92b12896e03b02af4abb902ff2 Mon Sep 17 00:00:00 2001 From: Aevann Date: Tue, 28 Feb 2023 18:56:22 +0200 Subject: [PATCH] handle race condition --- files/routes/polls.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/files/routes/polls.py b/files/routes/polls.py index 7d2512929..f0fcf31d6 100644 --- a/files/routes/polls.py +++ b/files/routes/polls.py @@ -24,7 +24,7 @@ def vote_option(option_id, v): if option.exclusive == 2: if option.post.total_bet_voted(v): - abort(403, "You can't bet on a closed poll!") + abort(403, "You can't participate in a closed bet!") if not v.charge_account('coins', POLL_BET_COINS): abort(400, f"You don't have {POLL_BET_COINS} coins!") g.db.add(v) @@ -36,10 +36,11 @@ def vote_option(option_id, v): vote = g.db.query(SubmissionOptionVote).join(SubmissionOption).filter( SubmissionOptionVote.user_id==v.id, SubmissionOptionVote.submission_id==option.submission_id, - SubmissionOption.exclusive==option.exclusive).one_or_none() + SubmissionOption.exclusive==option.exclusive).all() if vote: if option.exclusive == 2: abort(400, "You already voted on this bet!") - g.db.delete(vote) + for x in vote: + g.db.delete(x) existing = g.db.query(SubmissionOptionVote).filter_by(option_id=option_id, user_id=v.id).one_or_none() if not existing: