add company code to organization serialzier & handle quota weight exception

This commit is contained in:
2025-06-16 09:08:01 +03:30
parent 8df059bee9
commit 05b46a82b1
2 changed files with 36 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
from rest_framework.exceptions import APIException
from rest_framework import status
class QuotaWeightException(APIException):
""" if quota distributions weight is more """
status_code = status.HTTP_401_UNAUTHORIZED
default_detail = ''
default_code = 'unauthorized'

View File

@@ -1,6 +1,9 @@
from rest_framework import serializers
from apps.product import models as product_models
from apps.product.web.api.v1.product_serializers import QuotaSerializer
from django.db import models
from rest_framework.exceptions import APIException
from rest_framework import status
class QuotaDistributionSerializer(serializers.ModelSerializer):
@@ -13,6 +16,29 @@ class QuotaDistributionSerializer(serializers.ModelSerializer):
}
}
def validate(self, data):
""" to validate if distribution weight
more than quota weight raise exception """
quota = data['quota']
amount = data['weight']
instance_id = self.instance.id if self.instance else None
total = product_models.QuotaDistribution.objects.filter(
quota_id=quota
).exclude(id=instance_id).aggregate(
total=models.Sum('weight')
)['total'] or 0
print(total)
if total + amount > self.instance.weight:
raise APIException(
"مقدار وارد شده باعث می‌شود مجموع سهمیه‌ها از مقدار کل سهمیه بیشتر شود.", # noqa
status.HTTP_400_BAD_REQUEST,
)
return data
def to_representation(self, instance):
""" Custom output of serializer """