fix - bug of distribution serializer of quota stat
This commit is contained in:
@@ -545,7 +545,7 @@ class Quota(BaseModel):
|
||||
stat = OrganizationQuotaStats.objects.filter(
|
||||
quota=self,
|
||||
)
|
||||
return stat.first()
|
||||
return stat.first() if stat.exists() else None
|
||||
|
||||
def soft_delete(self):
|
||||
self.trash = True
|
||||
|
||||
@@ -9,11 +9,8 @@ from apps.product.exceptions import (
|
||||
QuotaExpiredTimeException,
|
||||
QuotaLimitByOrganizationException
|
||||
)
|
||||
from apps.product.web.api.v1.serializers.quota_serializers import (
|
||||
QuotaSerializer,
|
||||
QuotaBrokerValueSerializer,
|
||||
product_serializers
|
||||
)
|
||||
from apps.product.pos.api.v1.serializers import product_serializers
|
||||
from apps.product.pos.api.v1.serializers.quota_serializers import QuotaBrokerValueSerializer, QuotaSerializer
|
||||
|
||||
|
||||
class QuotaDistributionSerializer(serializers.ModelSerializer):
|
||||
@@ -99,13 +96,17 @@ class QuotaDistributionSerializer(serializers.ModelSerializer):
|
||||
|
||||
representation = super().to_representation(instance)
|
||||
|
||||
quota = instance.quota
|
||||
assigned_org = instance.assigned_organization
|
||||
assigner_org = instance.assigner_organization
|
||||
|
||||
# get org quota stat detail
|
||||
quotas_stat_amount = instance.quota.quota_amount_by_org(instance.assigned_organization)
|
||||
quotas_stat_amount = instance.quota.quota_amount_by_org(assigned_org)
|
||||
|
||||
# get quota stat for list of pricing features
|
||||
quota_stat = instance.get_quota_stat(
|
||||
instance.assigned_organization
|
||||
) if instance.quota.edited_pricing_features else None
|
||||
quota_stat = quota.get_quota_stat(
|
||||
assigned_org
|
||||
) if quota.edited_pricing_features else None
|
||||
|
||||
representation['remaining_weight'] = quotas_stat_amount['remaining_weight']
|
||||
representation['distributed'] = quotas_stat_amount['quota_distributed']
|
||||
@@ -114,32 +115,32 @@ class QuotaDistributionSerializer(serializers.ModelSerializer):
|
||||
representation['been_sold'] = quotas_stat_amount['been_sold']
|
||||
|
||||
representation['attribute_values'] = product_serializers.AttributeValueSerializer(
|
||||
instance.quota.attribute_values.filter(org_quota_stat=quota_stat),
|
||||
quota.attribute_values.filter(org_quota_stat=quota_stat),
|
||||
many=True
|
||||
).data
|
||||
|
||||
representation['brokers'] = QuotaBrokerValueSerializer(
|
||||
instance.quota.broker_values.filter(org_quota_stat=quota_stat),
|
||||
quota.broker_values.filter(org_quota_stat=quota_stat),
|
||||
many=True
|
||||
).data
|
||||
|
||||
if instance.quota:
|
||||
representation['quota'] = QuotaSerializer(instance.quota).data
|
||||
if quota:
|
||||
representation['quota'] = QuotaSerializer(quota).data
|
||||
|
||||
if instance.assigned_organization:
|
||||
if assigned_org:
|
||||
representation['assigned_organization'] = {
|
||||
'organization': instance.assigned_organization.name,
|
||||
'id': instance.assigned_organization.id,
|
||||
'organization': assigned_org.name,
|
||||
'id': assigned_org.id,
|
||||
# if distributor is 0 , organization has not any distribute
|
||||
'is_distributor': instance.quota.distributions_assigned.filter(
|
||||
assigner_organization=instance.assigned_organization
|
||||
'is_distributor': quota.distributions_assigned.filter(
|
||||
assigner_organization=assigned_org
|
||||
).count()
|
||||
}
|
||||
|
||||
if instance.assigner_organization:
|
||||
if assigner_org:
|
||||
representation['assigner_organization'] = {
|
||||
'organization': instance.assigner_organization.name,
|
||||
'id': instance.assigner_organization.id
|
||||
'organization': assigner_org.name,
|
||||
'id': assigner_org.id
|
||||
}
|
||||
|
||||
if instance.parent_distribution:
|
||||
|
||||
@@ -438,7 +438,16 @@ class QuotaViewSet(BaseViewSet, SoftDeleteMixin, viewsets.ModelViewSet, DynamicS
|
||||
try:
|
||||
quota = self.get_object()
|
||||
queryset = self.filter_query(
|
||||
quota.distributions_assigned.filter(
|
||||
quota.distributions_assigned.select_related(
|
||||
"quota",
|
||||
"assigned_organization",
|
||||
"assigner_organization",
|
||||
"parent_distribution",
|
||||
).prefetch_related(
|
||||
"quota__attribute_values",
|
||||
"quota__broker_values",
|
||||
"quota__distributions_assigned",
|
||||
).filter(
|
||||
Q(assigner_organization=my_org) |
|
||||
Q(assigned_organization__in=my_org_child_list)
|
||||
).order_by('-modify_date')
|
||||
|
||||
Reference in New Issue
Block a user