forked from MarseyWorld/MarseyWorld
stop usage of .update
parent
a11c12ef77
commit
25b9a0f535
|
@ -206,9 +206,9 @@ class User(Base):
|
||||||
return
|
return
|
||||||
|
|
||||||
if currency == 'coins':
|
if currency == 'coins':
|
||||||
g.db.query(User).filter(User.id == self.id).update({ User.coins: User.coins + amount })
|
self.coins += amount
|
||||||
else:
|
else:
|
||||||
g.db.query(User).filter(User.id == self.id).update({ User.marseybux: User.marseybux + amount })
|
self.marseybux += amount
|
||||||
|
|
||||||
g.db.flush()
|
g.db.flush()
|
||||||
|
|
||||||
|
@ -224,14 +224,14 @@ class User(Base):
|
||||||
account_balance = in_db.coins
|
account_balance = in_db.coins
|
||||||
|
|
||||||
if not should_check_balance or account_balance >= amount:
|
if not should_check_balance or account_balance >= amount:
|
||||||
g.db.query(User).filter(User.id == self.id).update({ User.coins: User.coins - amount })
|
self.coins -= amount
|
||||||
succeeded = True
|
succeeded = True
|
||||||
charged_coins = amount
|
charged_coins = amount
|
||||||
elif currency == 'marseybux':
|
elif currency == 'marseybux':
|
||||||
account_balance = in_db.marseybux
|
account_balance = in_db.marseybux
|
||||||
|
|
||||||
if not should_check_balance or account_balance >= amount:
|
if not should_check_balance or account_balance >= amount:
|
||||||
g.db.query(User).filter(User.id == self.id).update({ User.marseybux: User.marseybux - amount })
|
self.marseybux -= amount
|
||||||
succeeded = True
|
succeeded = True
|
||||||
elif currency == 'combined':
|
elif currency == 'combined':
|
||||||
if in_db.marseybux >= amount:
|
if in_db.marseybux >= amount:
|
||||||
|
@ -243,10 +243,8 @@ class User(Base):
|
||||||
if subtracted_coins > in_db.coins:
|
if subtracted_coins > in_db.coins:
|
||||||
return (False, 0)
|
return (False, 0)
|
||||||
|
|
||||||
g.db.query(User).filter(User.id == self.id).update({
|
self.coins -= subtracted_coins
|
||||||
User.marseybux: User.marseybux - subtracted_mbux,
|
self.marseybux -= subtracted_mbux
|
||||||
User.coins: User.coins - subtracted_coins,
|
|
||||||
})
|
|
||||||
succeeded = True
|
succeeded = True
|
||||||
charged_coins = subtracted_coins
|
charged_coins = subtracted_coins
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,9 @@ def execute_snappy(post:Post, v:User):
|
||||||
if group.name == 'biofoids': mul = 10
|
if group.name == 'biofoids': mul = 10
|
||||||
else: mul = 5
|
else: mul = 5
|
||||||
|
|
||||||
g.db.query(User).filter(User.id.in_(group_members)).update({ User.coins: User.coins + mul })
|
for user in g.db.query(User).filter(User.id.in_(group_members)).all():
|
||||||
|
user.pay_account('coins', mul)
|
||||||
|
g.db.add(user)
|
||||||
|
|
||||||
cost = len(group_members) * mul
|
cost = len(group_members) * mul
|
||||||
snappy.charge_account('coins', cost)
|
snappy.charge_account('coins', cost)
|
||||||
|
|
|
@ -157,7 +157,11 @@ def NOTIFY_USERS(text, v, oldtext=None, ghost=False, log_cost=None):
|
||||||
cost = g.db.query(User).count() * 5
|
cost = g.db.query(User).count() * 5
|
||||||
if cost > v.coins:
|
if cost > v.coins:
|
||||||
abort(403, f"You need {cost} coins to mention these ping groups!")
|
abort(403, f"You need {cost} coins to mention these ping groups!")
|
||||||
g.db.query(User).update({ User.coins: User.coins + 5 })
|
|
||||||
|
for user in g.db.query(User).all():
|
||||||
|
user.pay_account('coins', 5)
|
||||||
|
g.db.add(user)
|
||||||
|
|
||||||
v.charge_account('coins', cost)
|
v.charge_account('coins', cost)
|
||||||
if log_cost:
|
if log_cost:
|
||||||
log_cost.ping_cost = cost
|
log_cost.ping_cost = cost
|
||||||
|
@ -181,7 +185,9 @@ def NOTIFY_USERS(text, v, oldtext=None, ghost=False, log_cost=None):
|
||||||
if log_cost:
|
if log_cost:
|
||||||
log_cost.ping_cost = cost
|
log_cost.ping_cost = cost
|
||||||
|
|
||||||
g.db.query(User).filter(User.id.in_(members)).update({ User.coins: User.coins + mul })
|
for user in g.db.query(User).filter(User.id.in_(members)).all():
|
||||||
|
user.pay_account('coins', mul)
|
||||||
|
g.db.add(user)
|
||||||
|
|
||||||
v.charge_account('coins', cost)
|
v.charge_account('coins', cost)
|
||||||
|
|
||||||
|
|
|
@ -34,34 +34,26 @@ def cron(every_5m, every_1h, every_1d, every_1mo):
|
||||||
|
|
||||||
#I put commit under each task to release database locks and prevent main flask app crashing
|
#I put commit under each task to release database locks and prevent main flask app crashing
|
||||||
if every_5m:
|
if every_5m:
|
||||||
|
_award_timers_task()
|
||||||
|
|
||||||
if FEATURES['GAMBLING']:
|
if FEATURES['GAMBLING']:
|
||||||
check_if_end_lottery_task()
|
check_if_end_lottery_task()
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
spin_roulette_wheel()
|
spin_roulette_wheel()
|
||||||
g.db.commit()
|
|
||||||
#offsitementions.offsite_mentions_task(cache)
|
#offsitementions.offsite_mentions_task(cache)
|
||||||
|
|
||||||
if every_1h:
|
|
||||||
_award_timers_task()
|
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
if every_1d:
|
if every_1d:
|
||||||
stats.generate_charts_task(SITE)
|
stats.generate_charts_task(SITE)
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
_sub_inactive_purge_task()
|
_sub_inactive_purge_task()
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
cache.set('stats', stats.stats())
|
cache.set('stats', stats.stats())
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
_generate_emojis_zip()
|
_generate_emojis_zip()
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
_leaderboard_task()
|
_leaderboard_task()
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
|
g.db.commit()
|
||||||
g.db.close()
|
g.db.close()
|
||||||
del g.db
|
del g.db
|
||||||
stdout.flush()
|
stdout.flush()
|
||||||
|
@ -182,7 +174,13 @@ def _process_timer(attr, badge_ids, text, extra_attrs={}):
|
||||||
|
|
||||||
#set user attributes
|
#set user attributes
|
||||||
attr_dict = {attr: 0} | extra_attrs
|
attr_dict = {attr: 0} | extra_attrs
|
||||||
users.update(attr_dict)
|
|
||||||
|
for user in users:
|
||||||
|
for k, val in attr_dict.items():
|
||||||
|
k = str(k).split('.')[1]
|
||||||
|
if isinstance(val, tuple):
|
||||||
|
val = getattr(user, val[0])
|
||||||
|
setattr(user, k, val)
|
||||||
|
|
||||||
#remove corresponding badges
|
#remove corresponding badges
|
||||||
if badge_ids:
|
if badge_ids:
|
||||||
|
@ -191,7 +189,6 @@ def _process_timer(attr, badge_ids, text, extra_attrs={}):
|
||||||
#notify users
|
#notify users
|
||||||
for uid in uids:
|
for uid in uids:
|
||||||
send_repeatable_notification(uid, text)
|
send_repeatable_notification(uid, text)
|
||||||
g.db.commit()
|
|
||||||
|
|
||||||
|
|
||||||
def _award_timers_task():
|
def _award_timers_task():
|
||||||
|
@ -205,19 +202,19 @@ def _award_timers_task():
|
||||||
_process_timer(User.owoify, [167], "The OwOify award you received has expired!")
|
_process_timer(User.owoify, [167], "The OwOify award you received has expired!")
|
||||||
_process_timer(User.sharpen, [289], "The Sharpen award you received has expired!")
|
_process_timer(User.sharpen, [289], "The Sharpen award you received has expired!")
|
||||||
_process_timer(User.bite, [168], "The bite award you received has expired! You're now back in your original house!", {
|
_process_timer(User.bite, [168], "The bite award you received has expired! You're now back in your original house!", {
|
||||||
User.house: User.old_house,
|
User.house: ("old_house"),
|
||||||
User.old_house: '',
|
User.old_house: '',
|
||||||
})
|
})
|
||||||
_process_timer(User.earlylife, [169], "The earlylife award you received has expired!")
|
_process_timer(User.earlylife, [169], "The earlylife award you received has expired!")
|
||||||
_process_timer(User.marsify, [170], "The marsify award you received has expired!")
|
_process_timer(User.marsify, [170], "The marsify award you received has expired!")
|
||||||
_process_timer(User.rainbow, [171], "The rainbow award you received has expired!")
|
_process_timer(User.rainbow, [171], "The rainbow award you received has expired!")
|
||||||
_process_timer(User.queen, [285], "The queen award you received has expired!", {
|
_process_timer(User.queen, [285], "The queen award you received has expired!", {
|
||||||
User.username: User.prelock_username,
|
User.username: ("prelock_username"),
|
||||||
User.prelock_username: None,
|
User.prelock_username: None,
|
||||||
})
|
})
|
||||||
_process_timer(User.spider, [179], "The spider award you received has expired!")
|
_process_timer(User.spider, [179], "The spider award you received has expired!")
|
||||||
_process_timer(User.namechanged, [281], "The namelock award you received has expired. You're now back to your old username!", {
|
_process_timer(User.namechanged, [281], "The namelock award you received has expired. You're now back to your old username!", {
|
||||||
User.username: User.prelock_username,
|
User.username: ("prelock_username"),
|
||||||
User.prelock_username: None,
|
User.prelock_username: None,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -124,10 +124,15 @@ def notifications_messages(v:User):
|
||||||
).all()
|
).all()
|
||||||
|
|
||||||
notifs_unread = [n.comment_id for n in notifs_unread_row]
|
notifs_unread = [n.comment_id for n in notifs_unread_row]
|
||||||
g.db.query(Notification).filter(
|
notif_list = g.db.query(Notification).filter(
|
||||||
Notification.user_id == v.id,
|
Notification.user_id == v.id,
|
||||||
Notification.comment_id.in_(notifs_unread),
|
Notification.comment_id.in_(notifs_unread),
|
||||||
).update({Notification.read: True})
|
)
|
||||||
|
|
||||||
|
for n in notif_list:
|
||||||
|
n.read = True
|
||||||
|
g.db.add(n)
|
||||||
|
|
||||||
g.db.flush()
|
g.db.flush()
|
||||||
|
|
||||||
list_to_perserve_unread_attribute = []
|
list_to_perserve_unread_attribute = []
|
||||||
|
|
|
@ -97,14 +97,14 @@ def vote_post_comment(target_id, new, v, cls, vote_cls):
|
||||||
if existing and existing.vote_type == new: return "", 204
|
if existing and existing.vote_type == new: return "", 204
|
||||||
if existing:
|
if existing:
|
||||||
if existing.vote_type == 0 and new != 0:
|
if existing.vote_type == 0 and new != 0:
|
||||||
target.author.coins += coin_value
|
target.author.pay_account('coins', coin_value)
|
||||||
target.author.truescore += coin_delta
|
target.author.truescore += coin_delta
|
||||||
g.db.add(target.author)
|
g.db.add(target.author)
|
||||||
existing.vote_type = new
|
existing.vote_type = new
|
||||||
existing.coins = coin_value
|
existing.coins = coin_value
|
||||||
g.db.add(existing)
|
g.db.add(existing)
|
||||||
elif existing.vote_type != 0 and new == 0:
|
elif existing.vote_type != 0 and new == 0:
|
||||||
target.author.coins -= existing.coins
|
target.author.charge_account('coins', existing.coins, should_check_balance=False)
|
||||||
target.author.truescore -= coin_delta
|
target.author.truescore -= coin_delta
|
||||||
g.db.add(target.author)
|
g.db.add(target.author)
|
||||||
g.db.delete(existing)
|
g.db.delete(existing)
|
||||||
|
@ -112,7 +112,7 @@ def vote_post_comment(target_id, new, v, cls, vote_cls):
|
||||||
existing.vote_type = new
|
existing.vote_type = new
|
||||||
g.db.add(existing)
|
g.db.add(existing)
|
||||||
elif new != 0:
|
elif new != 0:
|
||||||
target.author.coins += coin_value
|
target.author.pay_account('coins', coin_value)
|
||||||
target.author.truescore += coin_delta
|
target.author.truescore += coin_delta
|
||||||
g.db.add(target.author)
|
g.db.add(target.author)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue