diff --git a/files/classes/award.py b/files/classes/award.py index 534157014..652126946 100644 --- a/files/classes/award.py +++ b/files/classes/award.py @@ -16,9 +16,10 @@ class AwardRelationship(Base): user_id = Column(Integer, ForeignKey("users.id")) submission_id = Column(Integer, ForeignKey("submissions.id")) comment_id = Column(Integer, ForeignKey("comments.id")) - kind = Column(String) + kind = Column(String, nullable=False) awarded_utc = Column(Integer) created_utc = Column(Integer) + price_paid = Column(Integer, default = 0, nullable=False) user = relationship("User", primaryjoin="AwardRelationship.user_id==User.id", back_populates="awards") post = relationship("Submission", primaryjoin="AwardRelationship.submission_id==Submission.id", back_populates="awards") diff --git a/files/helpers/config/const.py b/files/helpers/config/const.py index cf33977a2..0369332a4 100644 --- a/files/helpers/config/const.py +++ b/files/helpers/config/const.py @@ -501,6 +501,8 @@ BADGE_BLACKLIST = { # only grantable by AEVANN_ID and SNAKES_ID except on PCM NOTIFIED_USERS = {} +LOOTBOX_ITEM_COUNT = 5 + if SITE == 'rdrama.net': FEATURES['PRONOUNS'] = True FEATURES['HOUSES'] = True diff --git a/files/routes/awards.py b/files/routes/awards.py index 47794e04b..9c42c18af 100644 --- a/files/routes/awards.py +++ b/files/routes/awards.py @@ -93,10 +93,10 @@ def buy(v:User, award): if award == "lootbox": lootbox_items = [] - for i in range(5): # five items per lootbox + for _ in range(LOOTBOX_ITEM_COUNT): # five items per lootbox lb_award = random.choice(["firework", "confetti", "ricardo", "wholesome", "shit", "fireflies", "scooter", "train"]) lootbox_items.append(AWARDS[lb_award]['title']) - lb_award = AwardRelationship(user_id=v.id, kind=lb_award) + lb_award = AwardRelationship(user_id=v.id, kind=lb_award, price_paid=price // LOOTBOX_ITEM_COUNT) g.db.add(lb_award) g.db.flush() @@ -112,7 +112,7 @@ def buy(v:User, award): badge_grant(badge_id=78, user=v) else: - award_object = AwardRelationship(user_id=v.id, kind=award) + award_object = AwardRelationship(user_id=v.id, kind=award, price_paid=price) g.db.add(award_object) g.db.add(v) diff --git a/migrations/20221215-add-price-paid.sql b/migrations/20221215-add-price-paid.sql new file mode 100644 index 000000000..8d1e64a6d --- /dev/null +++ b/migrations/20221215-add-price-paid.sql @@ -0,0 +1,70 @@ +BEGIN +ALTER TABLE award_relationships ADD COLUMN price_paid NOT NULL DEFAULT 0; +ALTER TABLE award_relationships ALTER COLUMN kind SET NOT NULL; + +-- populate existing awards, this should match the values in files/helpers/config/awards.py + +-- deprecated +UPDATE award_relationships SET price_paid = 3000 WHERE kind = 'ghost'; +UPDATE award_relationships SET price_paid = 10000 WHERE kind = 'nword'; +-- fistmas 2021 +UPDATE award_relationships SET price_paid = 300 WHERE kind = 'snow'; +UPDATE award_relationships SET price_paid = 300 WHERE kind = 'gingerbread'; +UPDATE award_relationships SET price_paid = 300 WHERE kind = 'lights'; +UPDATE award_relationships SET price_paid = 300 WHERE kind = 'candycane'; +UPDATE award_relationships SET price_paid = 300 WHERE kind = 'fireplace'; +UPDATE award_relationships SET price_paid = 1000 WHERE kind = 'grinch'; +-- homoween 2021 and 2022 +UPDATE award_relationships SET price_paid = 500 WHERE kind = 'haunt'; +UPDATE award_relationships SET price_paid = 400 WHERE kind = 'upsidedown'; +UPDATE award_relationships SET price_paid = 300 WHERE kind = 'stab'; +UPDATE award_relationships SET price_paid = 200 WHERE kind = 'spiders'; +UPDATE award_relationships SET price_paid = 200 WHERE kind = 'fog'; +-- homoween 2022 +UPDATE award_relationships SET price_paid = 600 WHERE kind = 'jumpscare'; +UPDATE award_relationships SET price_paid = 500 WHERE kind = 'hw-bite'; +UPDATE award_relationships SET price_paid = 500 WHERE kind = 'hw-vax'; +UPDATE award_relationships SET price_paid = 1000 WHERE kind = 'hw-grinch'; +UPDATE award_relationships SET price_paid = 400 WHERE kind = 'flashlight'; +UPDATE award_relationships SET price_paid = 400 WHERE kind = 'candy-corn'; +UPDATE award_relationships SET price_paid = 400 WHERE kind = 'ectoplasm'; +UPDATE award_relationships SET price_paid = 200 WHERE kind = 'bones'; +UPDATE award_relationships SET price_paid = 200 WHERE kind = 'pumpkin'; +-- standard +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'marsify'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'shit'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'fireflies'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'train'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'scooter'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'wholesome'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'firework'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'confetti'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'ricardo'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'tilt'; +UPDATE award_relationships SET price_paid = 150 WHERE kind = 'glowie'; +UPDATE award_relationships SET price_paid = 777 WHERE kind = 'rehab'; +UPDATE award_relationships SET price_paid = 1000 WHERE kind = 'agendaposter'; +UPDATE award_relationships SET price_paid = 1000 WHERE kind = 'offsitementions'; +UPDATE award_relationships SET price_paid = 1000 WHERE kind = 'lootbox'; +UPDATE award_relationships SET price_paid = 1000 WHERE kind = 'beano'; +UPDATE award_relationships SET price_paid = 1000 WHERE kind = 'unpin'; +UPDATE award_relationships SET price_paid = 1250 WHERE kind = 'flairlock'; +UPDATE award_relationships SET price_paid = 1500 WHERE kind = 'pin'; +UPDATE award_relationships SET price_paid = 1500 WHERE kind = 'progressivestack'; +UPDATE award_relationships SET price_paid = 1500 WHERE kind = 'pizzashill'; +UPDATE award_relationships SET price_paid = 1500 WHERE kind = 'bird'; +UPDATE award_relationships SET price_paid = 2000 WHERE kind = 'spider'; +UPDATE award_relationships SET price_paid = 2750 WHERE kind = 'deflector'; +UPDATE award_relationships SET price_paid = 3000 WHERE kind = 'marsey'; +UPDATE award_relationships SET price_paid = 3000 WHERE kind = 'ban'; +UPDATE award_relationships SET price_paid = 3500 WHERE kind = 'unban'; +UPDATE award_relationships SET price_paid = 4000 WHERE kind = 'benefactor'; +UPDATE award_relationships SET price_paid = 5000 WHERE kind = 'eye'; +UPDATE award_relationships SET price_paid = 10000 WHERE kind = 'grass'; +UPDATE award_relationships SET price_paid = 20000 WHERE kind = 'unblockable'; +UPDATE award_relationships SET price_paid = 20000 WHERE kind = 'fish'; +UPDATE award_relationships SET price_paid = 20000 WHERE kind = 'pause'; +UPDATE award_relationships SET price_paid = 40000 WHERE kind = 'unpausable'; +UPDATE award_relationships SET price_paid = 50000 WHERE kind = 'alt'; +UPDATE award_relationships SET price_paid = 50000 WHERE kind = 'checkmark'; +COMMIT