diff --git a/apps/product/signals.py b/apps/product/signals.py index a6b445f..702ce3a 100644 --- a/apps/product/signals.py +++ b/apps/product/signals.py @@ -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 - if getattr(instance, 'stat_from_signal', False): - return +@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)