From e63b5e707f7ca50f9f64bce20ff735517201dc5a Mon Sep 17 00:00:00 2001 From: Aevann1 Date: Sat, 23 Oct 2021 21:15:50 +0200 Subject: [PATCH] fds --- files/routes/admin.py | 10 +++++++--- files/routes/login.py | 4 ++++ files/routes/settings.py | 4 ++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/files/routes/admin.py b/files/routes/admin.py index 3842fd83d..2566dfc24 100755 --- a/files/routes/admin.py +++ b/files/routes/admin.py @@ -352,10 +352,14 @@ def badge_grant_post(v): g.db.query(Badge).options(lazyload('*')).filter_by(badge_id=badge_id, user_id=user.id,).delete() g.db.commit() return redirect("/admin/badge_grant") + + if badge_id == 16: + badge = user.has_badge(17) + if badge: badge.delete() + + elif badge_id == 17 and user.has_badge(16): abort(403) - new_badge = Badge(badge_id=badge_id, - user_id=user.id, - ) + new_badge = Badge(badge_id=badge_id, user_id=user.id) desc = request.values.get("description") if desc: new_badge.description = desc diff --git a/files/routes/login.py b/files/routes/login.py index 8bdbcda79..acfcac764 100755 --- a/files/routes/login.py +++ b/files/routes/login.py @@ -306,6 +306,7 @@ def sign_up_post(v): if ref_id: ref_user = g.db.query(User).options( lazyload('*')).filter_by(id=ref_id).first() + if ref_user: badge_types = g.db.query(BadgeDef).options(lazyload('*')).filter(BadgeDef.qualification_expr.isnot(None)).all() for badge in badge_types: @@ -313,6 +314,9 @@ def sign_up_post(v): if not ref_user.has_badge(badge.id): new_badge = Badge(user_id=ref_user.id, badge_id=badge.id) g.db.add(new_badge) + else: + bad_badge = ref_user.has_badge(badge.id) + if bad_badge: g.db.delete(bad_badge) g.db.add(ref_user) diff --git a/files/routes/settings.py b/files/routes/settings.py index fb97cb32c..699ee450a 100755 --- a/files/routes/settings.py +++ b/files/routes/settings.py @@ -301,6 +301,10 @@ def gumroad(v): tier = tiers[response["variants_and_quantity"]] if v.patron == tier: return {"error": f"{patron} rewards already claimed"}, 400 + if v.patron: + badge = v.has_badge(20+tier) + if badge: badge.delete() + v.patron = tier if v.discord_id: add_role(v, f"{tier}")