forked from rDrama/rDrama
1
0
Fork 0
Aevann 2023-08-01 02:12:42 +03:00
parent 9bb1482278
commit 10d138db5d
3 changed files with 16 additions and 14 deletions

View File

@ -203,11 +203,12 @@ class User(Base):
if SITE == 'watchpeopledie.tv' and self.id == 5222: if SITE == 'watchpeopledie.tv' and self.id == 5222:
return return
if currency == 'coins': user_query = g.db.query(User).options(load_only(User.id)).filter_by(id=self.id)
self.coins += amount
else:
self.marseybux += amount
if currency == 'coins':
user_query.update({ User.coins: User.coins + amount })
else:
user_query.update({ User.marseybux: User.marseybux + amount })
def charge_account(self, currency, amount, **kwargs): def charge_account(self, currency, amount, **kwargs):
succeeded = False succeeded = False
@ -215,18 +216,20 @@ class User(Base):
should_check_balance = kwargs.get('should_check_balance', True) should_check_balance = kwargs.get('should_check_balance', True)
user_query = g.db.query(User).options(load_only(User.id)).filter_by(id=self.id)
if currency == 'coins': if currency == 'coins':
account_balance = self.coins account_balance = self.coins
if not should_check_balance or account_balance >= amount: if not should_check_balance or account_balance >= amount:
self.coins -= amount user_query.update({ User.coins: User.coins - amount })
succeeded = True succeeded = True
charged_coins = amount charged_coins = amount
elif currency == 'marseybux': elif currency == 'marseybux':
account_balance = self.marseybux account_balance = self.marseybux
if not should_check_balance or account_balance >= amount: if not should_check_balance or account_balance >= amount:
self.marseybux -= amount user_query.update({ User.marseybux: User.marseybux - amount })
succeeded = True succeeded = True
elif currency == 'combined': elif currency == 'combined':
if self.marseybux >= amount: if self.marseybux >= amount:
@ -238,8 +241,10 @@ class User(Base):
if subtracted_coins > self.coins: if subtracted_coins > self.coins:
return (False, 0) return (False, 0)
self.coins -= subtracted_coins user_query.update({
self.marseybux -= subtracted_mbux User.marseybux: User.marseybux - subtracted_mbux,
User.coins: User.coins - subtracted_coins,
})
succeeded = True succeeded = True
charged_coins = subtracted_coins charged_coins = subtracted_coins

View File

@ -156,7 +156,7 @@ def NOTIFY_USERS(text, v, oldtext=None, ghost=False, log_cost=None):
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).options(load_only(User.coins)).update({ User.coins: User.coins + 10 }) g.db.query(User).options(load_only(User.id)).update({ User.coins: User.coins + 10 })
v.charge_account('coins', cost) v.charge_account('coins', cost)
if log_cost: if log_cost:
@ -185,7 +185,7 @@ def NOTIFY_USERS(text, v, oldtext=None, ghost=False, log_cost=None):
log_cost.ping_cost = cost log_cost.ping_cost = cost
if total_members: if total_members:
g.db.query(User).options(load_only(User.coins)).filter(User.id.in_(total_members)).update({ User.coins: User.coins + 10 }) g.db.query(User).options(load_only(User.id)).filter(User.id.in_(total_members)).update({ User.coins: User.coins + 10 })
v.charge_account('coins', cost) v.charge_account('coins', cost)

View File

@ -126,15 +126,12 @@ def transfer_currency(v, username, currency_name, apply_tax):
abort(400, f"You don't have enough {currency_name}") abort(400, f"You don't have enough {currency_name}")
if not v.shadowbanned: if not v.shadowbanned:
user_query = g.db.query(User).filter_by(id=receiver.id)
if currency_name == 'marseybux': if currency_name == 'marseybux':
user_query.options(load_only(User.marseybux)).update({ User.marseybux: User.marseybux + amount - tax }) receiver.pay_account('marseybux', amount - tax)
elif currency_name == 'coins': elif currency_name == 'coins':
user_query.options(load_only(User.coins)).update({ User.coins: User.coins + amount - tax }) receiver.pay_account('coins', amount - tax)
else: else:
raise ValueError(f"Invalid currency '{currency_name}' got when transferring {amount} from {v.id} to {receiver.id}") raise ValueError(f"Invalid currency '{currency_name}' got when transferring {amount} from {v.id} to {receiver.id}")
g.db.add(receiver)
g.db.flush()
if GIFT_NOTIF_ID: send_repeatable_notification(GIFT_NOTIF_ID, log_message) if GIFT_NOTIF_ID: send_repeatable_notification(GIFT_NOTIF_ID, log_message)
send_repeatable_notification(receiver.id, notif_text) send_repeatable_notification(receiver.id, notif_text)
g.db.add(v) g.db.add(v)