chidren related name in distribuition
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user