chidren related name in distribuition

This commit is contained in:
2025-07-30 13:56:52 +03:30
parent fa182754e7
commit 0cc714ae67
2 changed files with 7 additions and 26 deletions

View File

@@ -533,7 +533,7 @@ class QuotaDistribution(BaseModel):
parent_distribution = models.ForeignKey(
'self',
on_delete=models.CASCADE,
related_name='parent',
related_name='children',
null=True
)
assigner_organization = models.ForeignKey(

View File

@@ -31,40 +31,21 @@ def recalculate_remaining_amount(quota):
def remaining_distribution_weight(instance: QuotaDistribution):
""" calculate remaining & distributed weight from distribution """
organization = get_organization_by_user(get_current_user())
print(get_current_user())
total_assigned_distribution = QuotaDistribution.objects.filter(
Q(assigned_organization=organization),
Q(parent_distribution=instance.parent_distribution)
).aggregate(
total_children_weight = instance.children.aggregate(
total=Sum('weight')
)['total'] or 0
print(organization.name)
print(total_assigned_distribution)
total_assigner_distribution = QuotaDistribution.objects.filter(
Q(assigner_organization=organization),
Q(parent_distribution=instance.parent_distribution)
).aggregate(
total=Sum('weight')
)['total'] or 0
print(total_assigner_distribution)
print(organization.name)
print(total_assigned_distribution - total_assigner_distribution)
instance.parent_distribution.remaining_weight = total_assigned_distribution - total_assigner_distribution
instance.parent_distribution.distributed = total_assigner_distribution
instance.remaining_weight = instance.weight - total_children_weight
instance.distributed = total_children_weight
instance._from_signal = True
instance.parent_distribution.save(update_fields=['remaining_weight', 'distributed'])
if instance.parent_distribution:
remaining_distribution_weight(instance.parent_distribution)
@receiver(post_save, sender=QuotaDistribution)
@receiver(post_delete, sender=QuotaDistribution)
def update_quota_remaining(sender, instance, **kwargs):
recalculate_remaining_amount(instance.quota)
# if _from_signal=True prevent from maximum recursion loop