fix - signals bug for quota stat

This commit is contained in:
2025-11-16 11:07:41 +03:30
parent 2ba59174d3
commit 25d0439761

View File

@@ -243,26 +243,6 @@ def update_quota_stats(instance: Quota):
])
@receiver(post_save, sender=Quota)
def organization_quota_stats(sender, quota: Quota, created: bool, **kwargs):
"""
set total received distributions for every organization
"""
org_quota_stat, created = OrganizationQuotaStats.objects.get_or_create(
quota=quota,
organization=quota.registerer_organization,
)
org_quota_stat.total_amount = quota.quota_weight
org_quota_stat.save(update_fields=['total_amount'])
# delete quota
if quota.trash:
org_quota_stat.soft_delete()
# prevent from maximum recursion loop
quota.stat_from_signal = True
@receiver([post_save, post_delete], sender=QuotaDistribution)
@receiver([post_save, post_delete], sender=InventoryQuotaSaleTransaction)
def update_stats_on_change(sender, instance, **kwargs):
@@ -275,14 +255,26 @@ def update_stats_on_change(sender, instance, **kwargs):
return
@receiver([post_save, post_delete], sender=Quota)
def update_quota_stats_on_change(sender, instance, **kwargs):
if sender == Quota:
# if _from_signal=True prevent from maximum recursion loop
@receiver(post_save, sender=Quota)
def organization_quota_stats(sender, instance: Quota, created: bool, **kwargs):
"""
set total received distributions for every organization
"""
if getattr(instance, 'stat_from_signal', False):
return
org_quota_stat, created = OrganizationQuotaStats.objects.get_or_create(
quota=instance,
organization=instance.registerer_organization,
)
org_quota_stat.total_amount = instance.quota_weight
org_quota_stat.save(update_fields=['total_amount'])
organization_quota_stats(instance)
# delete quota
if instance.trash:
org_quota_stat.soft_delete()
# prevent from maximum recursion loop
instance.stat_from_signal = True
@receiver(post_save, sender=QuotaDistribution)