db_kyc_project/backend/users/signals/users.py
Даня Вакуленков 4a18a785e9 Add backend code
2024-12-10 23:31:35 +03:00

27 lines
1.0 KiB
Python

from decimal import Decimal
from django.dispatch import receiver
from django.db.models.signals import pre_save, post_save
from django.db.models import F
from django.db.models.functions import Least
from users.models import TGUser, ClickTransaction
from misc.models import Setting
@receiver(post_save, sender=ClickTransaction, dispatch_uid='referral_transaction_signal')
def referral_signal(sender, instance, created, **kwargs):
if not created:
return
if referred_by_user := instance.user.referred_by:
referred_by_user.referral_storage = Least(
F('referral_storage') + instance.value * Decimal(Setting.objects.get(name='REFERRAL_PERCENT').value['value']),
referred_by_user.max_storage
)
referred_by_user.save()
for referree in instance.user.referrees.all():
referree.referral_storage = Least(
F('referral_storage') + instance.value * Decimal(Setting.objects.get(name='REVERSE_REFERRAL_PERCENT').value['value']),
referree.max_storage
)
referree.save()