count livestocks by type & set in herd model by signals

This commit is contained in:
2025-10-07 12:02:30 +03:30
parent f93e48c495
commit cad4ccbe4b
4 changed files with 49 additions and 1 deletions

View File

@@ -5,3 +5,8 @@ from rest_framework import status
class UniqueRancherApiException(APIException):
status_code = status.HTTP_403_FORBIDDEN
default_detail = "دامدار با این کد ملی از قبل در سیستم وجود دارد" # noqa
class HerdCapacityException(APIException):
status_code = status.HTTP_403_FORBIDDEN
default_detail = "مقدار حجم سبک و سنگین وارد شده از ظرفیت گله بیشتر میباشد" # noqa

View File

@@ -4,8 +4,9 @@ from apps.authentication.api.v1.serializers.serializer import (
ProvinceSerializer,
CitySerializer
)
from rest_framework import serializers
from apps.herd.exception import HerdCapacityException
from apps.herd.models import Herd, Rancher
from rest_framework import serializers
class HerdSerializer(serializers.ModelSerializer):
@@ -14,6 +15,14 @@ class HerdSerializer(serializers.ModelSerializer):
model = Herd
fields = '__all__'
def validate(self, attrs):
""" some validations for herd """
if attrs['heavy_livestock_number'] + attrs['light_livestock_number'] > attrs['capacity']:
raise HerdCapacityException()
return attrs
def to_representation(self, instance):
""" Customize serializer output """
representation = super().to_representation(instance)