import --> activate canceled tag distribution batches

This commit is contained in:
2026-01-24 12:01:08 +03:30
parent 757ad85688
commit 6311a23609
2 changed files with 49 additions and 3 deletions

View File

@@ -1,7 +1,8 @@
import random import random
from django.db import transaction from django.db import transaction
from django.db.models import Sum from django.db.models import Sum, Q
from django.db.models.aggregates import Count
from apps.authentication.models import Organization from apps.authentication.models import Organization
from apps.tag.exceptions import TagException from apps.tag.exceptions import TagException
@@ -154,10 +155,21 @@ class TagDistributionService:
distribution batch main page dashboard detail distribution batch main page dashboard detail
""" """
distributions_batch = TagDistributionBatch.objects.prefetch_related('distributions') if org.type.key == 'ADM':
distributions_batch = TagDistributionBatch.objects.prefetch_related('distributions')
else:
distributions_batch = TagDistributionBatch.objects.filter(
Q(assigner_org=org) |
Q(assigned_org=org)
)
distributions_batch.aggregate( data = distributions_batch.aggregate(
count=Count('id'),
total_tag_count=Sum('total_tag_count'), total_tag_count=Sum('total_tag_count'),
total_recieved_distributions=Count('id', filter=Q(assigned_org=org)),
total_sent_distributions=Count('id', filter=Q(assigner_org=org)),
total_distributed_tag_count=Sum('total_distributed_tag_count'), total_distributed_tag_count=Sum('total_distributed_tag_count'),
remaining_tag_count=Sum('remaining_tag_count'), remaining_tag_count=Sum('remaining_tag_count'),
) )
return data

View File

@@ -532,3 +532,37 @@ class TagDistributionBatchViewSet(
serializer = self.get_serializer(page, many=True) serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data) return self.get_paginated_response(serializer.data)
return Response(self.serializer_class(queryset).data) return Response(self.serializer_class(queryset).data)
@action(
methods=['post'],
detail=True,
url_name='reactivate_tag_dist_batch',
url_path='reactivate_tag_dist_batch',
name='reactivate_tag_dist_batch',
)
def reactivate_tag_dist_batch(self, request, pk=None):
"""
reactivate canceled distribution batch
"""
dist_batch = self.get_object()
dist_batch.is_closed = False
dist_batch.save(update_fields=['is_closed'])
return Response(status=status.HTTP_200_OK)
@action(
methods=['get'],
detail=False,
url_path='main_dashboard',
url_name='main_dashboard',
name='main_dashboard'
)
def main_dashboard(self, request):
"""
dashboard of main page
"""
org = get_organization_by_user(request.user)
dashboard_data = self.distribution_batch_main_dashboard(org=org)
return Response(dashboard_data, status=status.HTTP_200_OK)