chidren related name in distribuition
This commit is contained in:
@@ -533,7 +533,7 @@ class QuotaDistribution(BaseModel):
|
|||||||
parent_distribution = models.ForeignKey(
|
parent_distribution = models.ForeignKey(
|
||||||
'self',
|
'self',
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
related_name='parent',
|
related_name='children',
|
||||||
null=True
|
null=True
|
||||||
)
|
)
|
||||||
assigner_organization = models.ForeignKey(
|
assigner_organization = models.ForeignKey(
|
||||||
|
|||||||
@@ -31,40 +31,21 @@ def recalculate_remaining_amount(quota):
|
|||||||
def remaining_distribution_weight(instance: QuotaDistribution):
|
def remaining_distribution_weight(instance: QuotaDistribution):
|
||||||
""" calculate remaining & distributed weight from distribution """
|
""" calculate remaining & distributed weight from distribution """
|
||||||
|
|
||||||
organization = get_organization_by_user(get_current_user())
|
total_children_weight = instance.children.aggregate(
|
||||||
print(get_current_user())
|
|
||||||
|
|
||||||
total_assigned_distribution = QuotaDistribution.objects.filter(
|
|
||||||
Q(assigned_organization=organization),
|
|
||||||
Q(parent_distribution=instance.parent_distribution)
|
|
||||||
).aggregate(
|
|
||||||
total=Sum('weight')
|
total=Sum('weight')
|
||||||
)['total'] or 0
|
)['total'] or 0
|
||||||
print(organization.name)
|
instance.remaining_weight = instance.weight - total_children_weight
|
||||||
print(total_assigned_distribution)
|
instance.distributed = total_children_weight
|
||||||
|
|
||||||
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._from_signal = True
|
instance._from_signal = True
|
||||||
instance.parent_distribution.save(update_fields=['remaining_weight', 'distributed'])
|
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_save, sender=QuotaDistribution)
|
||||||
@receiver(post_delete, sender=QuotaDistribution)
|
@receiver(post_delete, sender=QuotaDistribution)
|
||||||
def update_quota_remaining(sender, instance, **kwargs):
|
def update_quota_remaining(sender, instance, **kwargs):
|
||||||
|
|
||||||
recalculate_remaining_amount(instance.quota)
|
recalculate_remaining_amount(instance.quota)
|
||||||
|
|
||||||
# if _from_signal=True prevent from maximum recursion loop
|
# if _from_signal=True prevent from maximum recursion loop
|
||||||
|
|||||||
Reference in New Issue
Block a user