awards: remove all award definitions
This commit is contained in:
parent
9211f17e25
commit
86ea70dfd3
3 changed files with 19 additions and 254 deletions
|
@ -224,13 +224,9 @@ class User(Base):
|
||||||
@property
|
@property
|
||||||
@lazy
|
@lazy
|
||||||
def user_awards(self):
|
def user_awards(self):
|
||||||
|
return_value = list(AWARDS_ENABLED.values())
|
||||||
return_value = list(AWARDS2.values())
|
|
||||||
|
|
||||||
user_awards = g.db.query(AwardRelationship).filter_by(user_id=self.id)
|
user_awards = g.db.query(AwardRelationship).filter_by(user_id=self.id)
|
||||||
|
|
||||||
for val in return_value: val['owned'] = user_awards.filter_by(kind=val['kind'], submission_id=None, comment_id=None).count()
|
for val in return_value: val['owned'] = user_awards.filter_by(kind=val['kind'], submission_id=None, comment_id=None).count()
|
||||||
|
|
||||||
return return_value
|
return return_value
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -79,121 +79,16 @@ PERMS = {
|
||||||
"DEBUG_LOGIN_TO_OTHERS": 3,
|
"DEBUG_LOGIN_TO_OTHERS": 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
AWARDS = {
|
AWARDS = {}
|
||||||
"lootbox": {
|
|
||||||
"kind": "lootbox",
|
|
||||||
"title": "Lootstocking",
|
|
||||||
"description": "???",
|
|
||||||
"icon": "fas fa-stocking",
|
|
||||||
"color": "text-danger",
|
|
||||||
"price": 1000
|
|
||||||
},
|
|
||||||
"shit": {
|
|
||||||
"kind": "shit",
|
|
||||||
"title": "Shit",
|
|
||||||
"description": "Makes flies swarm the post.",
|
|
||||||
"icon": "fas fa-poop",
|
|
||||||
"color": "text-black-50",
|
|
||||||
"price": 300
|
|
||||||
},
|
|
||||||
"fireflies": {
|
|
||||||
"kind": "fireflies",
|
|
||||||
"title": "Fireflies",
|
|
||||||
"description": "Makes fireflies swarm the post.",
|
|
||||||
"icon": "fas fa-sparkles",
|
|
||||||
"color": "text-warning",
|
|
||||||
"price": 300
|
|
||||||
},
|
|
||||||
"train": {
|
|
||||||
"kind": "train",
|
|
||||||
"title": "Train",
|
|
||||||
"description": "Summons a train on the post.",
|
|
||||||
"icon": "fas fa-train",
|
|
||||||
"color": "text-pink",
|
|
||||||
"price": 300
|
|
||||||
},
|
|
||||||
"scooter": {
|
|
||||||
"kind": "scooter",
|
|
||||||
"title": "Scooter",
|
|
||||||
"description": "Summons a scooter on the post.",
|
|
||||||
"icon": "fas fa-flag-usa",
|
|
||||||
"color": "text-muted",
|
|
||||||
"price": 300
|
|
||||||
},
|
|
||||||
"wholesome": {
|
|
||||||
"kind": "wholesome",
|
|
||||||
"title": "Wholesome",
|
|
||||||
"description": "Summons a wholesome marsey on the post.",
|
|
||||||
"icon": "fas fa-smile-beam",
|
|
||||||
"color": "text-yellow",
|
|
||||||
"price": 300
|
|
||||||
},
|
|
||||||
"glowie": {
|
|
||||||
"kind": "glowie",
|
|
||||||
"title": "Glowie",
|
|
||||||
"description": "Indicates that the recipient can be seen when driving. Just run them over.",
|
|
||||||
"icon": "fas fa-user-secret",
|
|
||||||
"color": "text-green",
|
|
||||||
"price": 300
|
|
||||||
},
|
|
||||||
"pin": {
|
|
||||||
"kind": "pin",
|
|
||||||
"title": "1-Hour Pin",
|
|
||||||
"description": "Pins the post/comment.",
|
|
||||||
"icon": "fas fa-thumbtack fa-rotate--45",
|
|
||||||
"color": "text-warning",
|
|
||||||
"price": 1000
|
|
||||||
},
|
|
||||||
"unpin": {
|
|
||||||
"kind": "unpin",
|
|
||||||
"title": "1-Hour Unpin",
|
|
||||||
"description": "Removes 1 hour from the pin duration of the post/comment.",
|
|
||||||
"icon": "fas fa-thumbtack fa-rotate--45",
|
|
||||||
"color": "text-black",
|
|
||||||
"price": 1000
|
|
||||||
},
|
|
||||||
"ban": {
|
|
||||||
"kind": "ban",
|
|
||||||
"title": "1-Day Ban",
|
|
||||||
"description": "Bans the recipient for a day.",
|
|
||||||
"icon": "fas fa-gavel",
|
|
||||||
"color": "text-danger",
|
|
||||||
"price": 3000
|
|
||||||
},
|
|
||||||
"unban": {
|
|
||||||
"kind": "unban",
|
|
||||||
"title": "1-Day Unban",
|
|
||||||
"description": "Removes 1 day from the ban duration of the recipient.",
|
|
||||||
"icon": "fas fa-gavel",
|
|
||||||
"color": "text-success",
|
|
||||||
"price": 3500
|
|
||||||
},
|
|
||||||
"benefactor": {
|
|
||||||
"kind": "benefactor",
|
|
||||||
"title": "Benefactor",
|
|
||||||
"description": "Grants one month of paypig status and 2500 marseybux to the recipient. Cannot be used on yourself.",
|
|
||||||
"icon": "fas fa-gift",
|
|
||||||
"color": "text-blue",
|
|
||||||
"price": 4000
|
|
||||||
},
|
|
||||||
"grass": {
|
|
||||||
"kind": "grass",
|
|
||||||
"title": "Grass",
|
|
||||||
"description": "Doesn't do anything",
|
|
||||||
"icon": "fas fa-seedling",
|
|
||||||
"color": "text-success",
|
|
||||||
"price": 10000
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
AWARDS2 = deepcopy(AWARDS)
|
AWARDS_ENABLED = deepcopy(AWARDS)
|
||||||
for k, val in AWARDS.items():
|
for k, val in AWARDS.items():
|
||||||
if val['description'] == '???': AWARDS2.pop(k)
|
if val['description'] == '???': AWARDS_ENABLED.pop(k)
|
||||||
|
|
||||||
|
|
||||||
AWARDS3 = {}
|
AWARDS_JL2_PRINTABLE = {}
|
||||||
for k, val in AWARDS2.items():
|
for k, val in AWARDS_ENABLED.items():
|
||||||
if val['price'] == 300: AWARDS3[k] = val
|
if val['price'] == 300: AWARDS_JL2_PRINTABLE[k] = val
|
||||||
|
|
||||||
NOTIFIED_USERS = {
|
NOTIFIED_USERS = {
|
||||||
# format: 'substring' ↦ User ID to notify
|
# format: 'substring' ↦ User ID to notify
|
||||||
|
|
|
@ -15,7 +15,7 @@ from copy import deepcopy
|
||||||
def shop(v):
|
def shop(v):
|
||||||
abort(404) # disable entirely pending possible future use of coins
|
abort(404) # disable entirely pending possible future use of coins
|
||||||
|
|
||||||
AWARDS = deepcopy(AWARDS2)
|
AWARDS = deepcopy(AWARDS_ENABLED)
|
||||||
|
|
||||||
for val in AWARDS.values(): val["owned"] = 0
|
for val in AWARDS.values(): val["owned"] = 0
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ def buy(v, award):
|
||||||
if award == 'ghost' and v.admin_level < 2:
|
if award == 'ghost' and v.admin_level < 2:
|
||||||
abort(403, "Only admins can buy that award.")
|
abort(403, "Only admins can buy that award.")
|
||||||
|
|
||||||
AWARDS = deepcopy(AWARDS2)
|
AWARDS = deepcopy(AWARDS_ENABLED)
|
||||||
|
|
||||||
if award not in AWARDS: abort(400)
|
if award not in AWARDS: abort(400)
|
||||||
og_price = AWARDS[award]["price"]
|
og_price = AWARDS[award]["price"]
|
||||||
|
@ -50,7 +50,6 @@ def buy(v, award):
|
||||||
|
|
||||||
if request.values.get("mb"):
|
if request.values.get("mb"):
|
||||||
if v.procoins < price: abort(400, "Not enough marseybux.")
|
if v.procoins < price: abort(400, "Not enough marseybux.")
|
||||||
if award == "grass": abort(403, "You can't buy the grass award with marseybux.")
|
|
||||||
v.procoins -= price
|
v.procoins -= price
|
||||||
else:
|
else:
|
||||||
if v.coins < price: abort(400, "Not enough coins.")
|
if v.coins < price: abort(400, "Not enough coins.")
|
||||||
|
@ -85,33 +84,8 @@ def buy(v, award):
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
|
|
||||||
|
|
||||||
if award == "lootbox":
|
award_object = AwardRelationship(user_id=v.id, kind=award)
|
||||||
send_repeatable_notification(995, f"@{v.username} bought a lootbox!")
|
g.db.add(award_object)
|
||||||
for i in [1,2,3,4,5]:
|
|
||||||
award = random.choice(["snow", "gingerbread", "lights", "candycane", "fireplace"])
|
|
||||||
award = AwardRelationship(user_id=v.id, kind=award)
|
|
||||||
g.db.add(award)
|
|
||||||
g.db.flush()
|
|
||||||
v.lootboxes_bought += 1
|
|
||||||
if v.lootboxes_bought == 10 and not v.has_badge(76):
|
|
||||||
new_badge = Badge(badge_id=76, user_id=v.id)
|
|
||||||
g.db.add(new_badge)
|
|
||||||
g.db.flush()
|
|
||||||
send_notification(v.id, f"@AutoJanny has given you the following profile badge:\n\n\n\n{new_badge.name}")
|
|
||||||
elif v.lootboxes_bought == 50 and not v.has_badge(77):
|
|
||||||
new_badge = Badge(badge_id=77, user_id=v.id)
|
|
||||||
g.db.add(new_badge)
|
|
||||||
g.db.flush()
|
|
||||||
send_notification(v.id, f"@AutoJanny has given you the following profile badge:\n\n\n\n{new_badge.name}")
|
|
||||||
elif v.lootboxes_bought == 150 and not v.has_badge(78):
|
|
||||||
new_badge = Badge(badge_id=78, user_id=v.id)
|
|
||||||
g.db.add(new_badge)
|
|
||||||
g.db.flush()
|
|
||||||
send_notification(v.id, f"@AutoJanny has given you the following profile badge:\n\n\n\n{new_badge.name}")
|
|
||||||
|
|
||||||
else:
|
|
||||||
award_object = AwardRelationship(user_id=v.id, kind=award)
|
|
||||||
g.db.add(award_object)
|
|
||||||
|
|
||||||
g.db.add(v)
|
g.db.add(v)
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
|
@ -161,54 +135,6 @@ def award_post(pid, v):
|
||||||
if note: msg += f"\n\n> {note}"
|
if note: msg += f"\n\n> {note}"
|
||||||
send_repeatable_notification(author.id, msg)
|
send_repeatable_notification(author.id, msg)
|
||||||
|
|
||||||
if kind == "ban":
|
|
||||||
link = f"[this post]({post.shortlink})"
|
|
||||||
|
|
||||||
if not author.is_suspended:
|
|
||||||
author.ban(reason=f"1-Day ban award used by @{v.username} on /post/{post.id}", days=1)
|
|
||||||
send_repeatable_notification(author.id, f"Your account has been banned for **a day** for {link}. It sucked and you should feel bad.")
|
|
||||||
elif author.unban_utc:
|
|
||||||
author.unban_utc += 86400
|
|
||||||
send_repeatable_notification(author.id, f"Your account has been banned for **yet another day** for {link}. Seriously man?")
|
|
||||||
elif kind == "unban":
|
|
||||||
if not author.is_suspended or not author.unban_utc or time.time() > author.unban_utc: abort(403)
|
|
||||||
|
|
||||||
if author.unban_utc - time.time() > 86400:
|
|
||||||
author.unban_utc -= 86400
|
|
||||||
send_repeatable_notification(author.id, "Your ban duration has been reduced by 1 day!")
|
|
||||||
else:
|
|
||||||
author.unban_utc = 0
|
|
||||||
author.is_banned = 0
|
|
||||||
author.ban_evade = 0
|
|
||||||
send_repeatable_notification(author.id, "You have been unbanned!")
|
|
||||||
elif kind == "pin":
|
|
||||||
if post.stickied and post.stickied_utc:
|
|
||||||
post.stickied_utc += 3600
|
|
||||||
else:
|
|
||||||
post.stickied = f'{v.username} (pin award)'
|
|
||||||
post.stickied_utc = int(time.time()) + 3600
|
|
||||||
g.db.add(post)
|
|
||||||
cache.delete_memoized(frontlist)
|
|
||||||
elif kind == "unpin":
|
|
||||||
if not post.stickied_utc: abort(403)
|
|
||||||
t = post.stickied_utc - 3600
|
|
||||||
if time.time() > t:
|
|
||||||
post.stickied = None
|
|
||||||
post.stickied_utc = None
|
|
||||||
cache.delete_memoized(frontlist)
|
|
||||||
else: post.stickied_utc = t
|
|
||||||
g.db.add(post)
|
|
||||||
elif kind == "benefactor":
|
|
||||||
author.patron = 1
|
|
||||||
if author.patron_utc: author.patron_utc += 2629746
|
|
||||||
else: author.patron_utc = int(time.time()) + 2629746
|
|
||||||
author.procoins += 2500
|
|
||||||
if not v.has_badge(103):
|
|
||||||
badge = Badge(user_id=v.id, badge_id=103)
|
|
||||||
g.db.add(badge)
|
|
||||||
g.db.flush()
|
|
||||||
send_notification(v.id, f"@AutoJanny has given you the following profile badge:\n\n\n\n{badge.name}")
|
|
||||||
|
|
||||||
if author.received_award_count: author.received_award_count += 1
|
if author.received_award_count: author.received_award_count += 1
|
||||||
else: author.received_award_count = 1
|
else: author.received_award_count = 1
|
||||||
g.db.add(author)
|
g.db.add(author)
|
||||||
|
@ -260,54 +186,6 @@ def award_comment(cid, v):
|
||||||
if note: msg += f"\n\n> {note}"
|
if note: msg += f"\n\n> {note}"
|
||||||
send_repeatable_notification(author.id, msg)
|
send_repeatable_notification(author.id, msg)
|
||||||
|
|
||||||
if kind == "benefactor" and author.id == v.id:
|
|
||||||
abort(400, "You can't use this award on yourself.")
|
|
||||||
|
|
||||||
if kind == "ban":
|
|
||||||
link = f"[this comment]({c.shortlink})"
|
|
||||||
|
|
||||||
if not author.is_suspended:
|
|
||||||
author.ban(reason=f"1-Day ban award used by @{v.username} on /comment/{c.id}", days=1)
|
|
||||||
send_repeatable_notification(author.id, f"Your account has been banned for **a day** for {link}. It sucked and you should feel bad.")
|
|
||||||
elif author.unban_utc:
|
|
||||||
author.unban_utc += 86400
|
|
||||||
send_repeatable_notification(author.id, f"Your account has been banned for **yet another day** for {link}. Seriously man?")
|
|
||||||
elif kind == "unban":
|
|
||||||
if not author.is_suspended or not author.unban_utc or time.time() > author.unban_utc: abort(403)
|
|
||||||
|
|
||||||
if author.unban_utc - time.time() > 86400:
|
|
||||||
author.unban_utc -= 86400
|
|
||||||
send_repeatable_notification(author.id, "Your ban duration has been reduced by 1 day!")
|
|
||||||
else:
|
|
||||||
author.unban_utc = 0
|
|
||||||
author.is_banned = 0
|
|
||||||
author.ban_evade = 0
|
|
||||||
send_repeatable_notification(author.id, "You have been unbanned!")
|
|
||||||
elif kind == "pin":
|
|
||||||
if c.is_pinned and c.is_pinned_utc: c.is_pinned_utc += 3600
|
|
||||||
else:
|
|
||||||
c.is_pinned = f'{v.username} (pin award)'
|
|
||||||
c.is_pinned_utc = int(time.time()) + 3600
|
|
||||||
g.db.add(c)
|
|
||||||
elif kind == "unpin":
|
|
||||||
if not c.is_pinned_utc: abort(403)
|
|
||||||
t = c.is_pinned_utc - 3600
|
|
||||||
if time.time() > t:
|
|
||||||
c.is_pinned = None
|
|
||||||
c.is_pinned_utc = None
|
|
||||||
else: c.is_pinned_utc = t
|
|
||||||
g.db.add(c)
|
|
||||||
elif kind == "benefactor":
|
|
||||||
author.patron = 1
|
|
||||||
if author.patron_utc: author.patron_utc += 2629746
|
|
||||||
else: author.patron_utc = int(time.time()) + 2629746
|
|
||||||
author.procoins += 2500
|
|
||||||
if not v.has_badge(103):
|
|
||||||
badge = Badge(user_id=v.id, badge_id=103)
|
|
||||||
g.db.add(badge)
|
|
||||||
g.db.flush()
|
|
||||||
send_notification(v.id, f"@AutoJanny has given you the following profile badge:\n\n\n\n{badge.name}")
|
|
||||||
|
|
||||||
if author.received_award_count: author.received_award_count += 1
|
if author.received_award_count: author.received_award_count += 1
|
||||||
else: author.received_award_count = 1
|
else: author.received_award_count = 1
|
||||||
g.db.add(author)
|
g.db.add(author)
|
||||||
|
@ -323,7 +201,7 @@ def admin_userawards_get(v):
|
||||||
abort(404) # disable entirely pending possible future use of coins
|
abort(404) # disable entirely pending possible future use of coins
|
||||||
|
|
||||||
if v.admin_level != 3:
|
if v.admin_level != 3:
|
||||||
return render_template("admin/awards.html", awards=list(AWARDS3.values()), v=v)
|
return render_template("admin/awards.html", awards=list(AWARDS_JL2_PRINTABLE.values()), v=v)
|
||||||
|
|
||||||
return render_template("admin/awards.html", awards=list(AWARDS.values()), v=v)
|
return render_template("admin/awards.html", awards=list(AWARDS.values()), v=v)
|
||||||
|
|
||||||
|
@ -335,22 +213,15 @@ def admin_userawards_post(v):
|
||||||
|
|
||||||
try: u = request.values.get("username").strip()
|
try: u = request.values.get("username").strip()
|
||||||
except: abort(404)
|
except: abort(404)
|
||||||
|
whitelist = ()
|
||||||
whitelist = ("shit", "fireflies", "train", "scooter", "wholesome", "glowie")
|
|
||||||
|
|
||||||
u = get_user(u, graceful=False, v=v)
|
u = get_user(u, graceful=False, v=v)
|
||||||
|
|
||||||
notify_awards = {}
|
notify_awards = {}
|
||||||
|
|
||||||
for key, value in request.values.items():
|
for key, value in request.values.items():
|
||||||
if key not in AWARDS: continue
|
if key not in AWARDS: continue
|
||||||
|
|
||||||
if v.admin_level < 3 and key not in whitelist: continue
|
if v.admin_level < 3 and key not in whitelist: continue
|
||||||
|
|
||||||
if value:
|
if value:
|
||||||
|
|
||||||
if int(value) > 10: abort(403)
|
if int(value) > 10: abort(403)
|
||||||
|
|
||||||
if int(value): notify_awards[key] = int(value)
|
if int(value): notify_awards[key] = int(value)
|
||||||
|
|
||||||
for x in range(int(value)):
|
for x in range(int(value)):
|
||||||
|
@ -358,7 +229,6 @@ def admin_userawards_post(v):
|
||||||
user_id=u.id,
|
user_id=u.id,
|
||||||
kind=key
|
kind=key
|
||||||
)
|
)
|
||||||
|
|
||||||
g.db.add(award)
|
g.db.add(award)
|
||||||
|
|
||||||
if v.id != u.id:
|
if v.id != u.id:
|
||||||
|
@ -384,5 +254,9 @@ def admin_userawards_post(v):
|
||||||
|
|
||||||
g.db.commit()
|
g.db.commit()
|
||||||
|
|
||||||
if v.admin_level != 3: return render_template("admin/awards.html", awards=list(AWARDS3.values()), v=v)
|
if v.admin_level < 3:
|
||||||
return render_template("admin/awards.html", awards=list(AWARDS.values()), v=v)
|
awards: dict = AWARDS_JL2_PRINTABLE
|
||||||
|
else:
|
||||||
|
awards: dict = AWARDS
|
||||||
|
|
||||||
|
return render_template("admin/awards.html", awards=awards, v=v)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue