fix --> batch statistics
This commit is contained in:
@@ -86,18 +86,20 @@ class TagDistributionService:
|
|||||||
|
|
||||||
return {'tag_distributions': distributions, 'distributions_batch': distributions_batch}
|
return {'tag_distributions': distributions, 'distributions_batch': distributions_batch}
|
||||||
|
|
||||||
def edit_distribution_from_batch(self, dist_batch: TagDistributionBatch = None, data: dict = None,
|
def edit_distribution_from_batch(
|
||||||
org: Organization = None):
|
self, dist_batch: TagDistributionBatch = None,
|
||||||
|
data: dict = None,
|
||||||
|
org: Organization = None
|
||||||
|
):
|
||||||
"""
|
"""
|
||||||
edit record of distributed tags
|
edit record of distributed tags
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# clear and hard delete of distributions
|
# clear and hard delete of distributions
|
||||||
distributions = dist_batch.distributions.all()
|
dist_batch_distributions = dist_batch.distributions.all()
|
||||||
for dist in distributions: # free distributed tags from reserve
|
for dist in dist_batch_distributions: # free distributed tags from reserve
|
||||||
dist.tag.all().update(status='F')
|
dist.tag.all().update(status='F')
|
||||||
dist_batch.distributions.clear()
|
dist_batch_distributions.delete()
|
||||||
distributions.delete()
|
|
||||||
|
|
||||||
# create new distributions and update batch
|
# create new distributions and update batch
|
||||||
total_counted_tags = 0
|
total_counted_tags = 0
|
||||||
@@ -153,6 +155,7 @@ class TagDistributionService:
|
|||||||
dist_batch.assigned_org = assigned_org
|
dist_batch.assigned_org = assigned_org
|
||||||
dist_batch.total_tag_count = total_counted_tags
|
dist_batch.total_tag_count = total_counted_tags
|
||||||
dist_batch.distribution_type = distribution_type # noqa
|
dist_batch.distribution_type = distribution_type # noqa
|
||||||
|
dist_batch.save(update_fields=['assigned_org', 'total_tag_count', 'distribution_type'])
|
||||||
dist_batch.distributions.add(*distributions)
|
dist_batch.distributions.add(*distributions)
|
||||||
|
|
||||||
return {'tag_distributions': distributions, 'distributions_batch': dist_batch}
|
return {'tag_distributions': distributions, 'distributions_batch': dist_batch}
|
||||||
|
|||||||
@@ -1,26 +1,10 @@
|
|||||||
from django.db.models import Count
|
|
||||||
from django.db.models.signals import m2m_changed
|
from django.db.models.signals import m2m_changed
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from apps.tag.models import TagDistribution, TagDistributionBatch
|
from apps.tag.models import TagDistribution, TagDistributionBatch, Tag
|
||||||
|
|
||||||
|
|
||||||
# @receiver(post_save, sender=TagDistribution)
|
|
||||||
# def calculate_tag_batch_details(sender, instance: TagDistribution, **kwargs):
|
|
||||||
# """
|
|
||||||
# calculate distribution & remaining tag count from batch
|
|
||||||
# """
|
|
||||||
# distributions = TagDistribution.objects.filter(batch=instance.batch)
|
|
||||||
#
|
|
||||||
# distributed_tags = distributions.aggregate(count=Count('tag'))['count']
|
|
||||||
#
|
|
||||||
# instance.batch.total_distributed_tags = distributed_tags \
|
|
||||||
# if not instance.batch.total_distributed_tags != 0 \
|
|
||||||
# else instance.total_tag_count
|
|
||||||
# instance.batch.total_remaining_tags = int(instance.batch.request_number) - distributed_tags
|
|
||||||
# instance.batch.save(update_fields=['total_distributed_tags', 'total_remaining_tags'])
|
|
||||||
|
|
||||||
@receiver(m2m_changed, sender=TagDistribution.tag.through)
|
@receiver(m2m_changed, sender=TagDistribution.tag.through)
|
||||||
def update_batch_on_distribution_change(
|
def update_batch_on_distribution_change(
|
||||||
sender, instance: TagDistribution, action, **kwargs
|
sender, instance: TagDistribution, action, **kwargs
|
||||||
@@ -35,9 +19,10 @@ def update_batch_on_distribution_change(
|
|||||||
|
|
||||||
distributions = TagDistribution.objects.filter(batch=batch)
|
distributions = TagDistribution.objects.filter(batch=batch)
|
||||||
|
|
||||||
distributed_tags = distributions.aggregate(
|
distributed_tags = Tag.objects.filter(
|
||||||
total=Count('tag')
|
distributions__batch=batch
|
||||||
)['total'] or 0
|
).distinct().count()
|
||||||
|
print(distributed_tags)
|
||||||
|
|
||||||
batch.total_distributed_tags = distributed_tags
|
batch.total_distributed_tags = distributed_tags
|
||||||
batch.total_remaining_tags = (
|
batch.total_remaining_tags = (
|
||||||
@@ -74,7 +59,6 @@ def calculate_tag_distribution_detail(sender, instance: TagDistributionBatch, **
|
|||||||
tag_dist_batch.parent.save(update_fields=['total_distributed_tag_count', 'remaining_tag_count'])
|
tag_dist_batch.parent.save(update_fields=['total_distributed_tag_count', 'remaining_tag_count'])
|
||||||
|
|
||||||
tag_dist_batch.remaining_tag_count = tag_dist_batch.total_tag_count
|
tag_dist_batch.remaining_tag_count = tag_dist_batch.total_tag_count
|
||||||
print(tag_dist_batch.remaining_tag_count)
|
|
||||||
instance.flag = True
|
instance.flag = True
|
||||||
tag_dist_batch.save(update_fields=['remaining_tag_count'])
|
tag_dist_batch.save(update_fields=['remaining_tag_count'])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user