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