From 8355d4af57b29fb9d6f8c174a95b9c7c6db1d75f Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Tue, 21 Oct 2025 15:35:54 +0330 Subject: [PATCH] refactor update method to use dynamic field assignment in quota serializer --- .../api/v1/serializers/quota_serializers.py | 48 +++++++++++-------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/apps/product/web/api/v1/serializers/quota_serializers.py b/apps/product/web/api/v1/serializers/quota_serializers.py index 459967e..241c62c 100644 --- a/apps/product/web/api/v1/serializers/quota_serializers.py +++ b/apps/product/web/api/v1/serializers/quota_serializers.py @@ -83,27 +83,33 @@ class QuotaSerializer(serializers.ModelSerializer): def update(self, instance, validated_data): """ Custom Update """ - instance.quota_id = validated_data.get('quota_id', instance.quota_id) - instance.quota_code = validated_data.get('quota_code', instance.quota_code) - instance.quota_weight = validated_data.get('quota_weight', instance.quota_weight) - instance.remaining_weight = validated_data.get('remaining_weight', instance.remaining_weight) - instance.quota_distributed = validated_data.get('quota_distributed', instance.quota_distributed) - instance.product = validated_data.get('product', instance.product) - instance.sale_type = validated_data.get('sale_type', instance.sale_type) - instance.sale_unit = validated_data.get('sale_unit', instance.sale_type) - instance.month_choices = validated_data.get('month_choices', instance.month_choices) - instance.sale_license = validated_data.get('sale_license', instance.sale_license) - instance.group = validated_data.get('group', instance.group) - instance.has_distribution_limit = validated_data.get('has_distribution_limit', instance.has_distribution_limit) - instance.distribution_mode = validated_data.get('distribution_mode', instance.distribution_mode) - instance.has_organization_limit = validated_data.get('has_organization_limit', instance.has_organization_limit) - instance.base_price_factory = validated_data.get('base_price_factory', instance.base_price_factory) - instance.base_price_cooperative = validated_data.get('base_price_cooperative', instance.base_price_cooperative) - instance.final_price = validated_data.get('final_price', instance.final_price) - instance.is_closed = validated_data.get('is_closed', instance.is_closed) - instance.closed_at = validated_data.get('closed_at', instance.closed_at) - instance.limit_by_herd_size = validated_data.get('limit_by_herd_size', instance.limit_by_herd_size) - instance.pos_sale_type = validated_data.get('pos_sale_type', instance.pos_sale_type) + fields = [ + "quota_id", + "quota_code", + "quota_weight", + "remaining_weight", + "quota_distributed", + "product", + "sale_type", + "sale_unit", + "month_choices", + "sale_license", + "group", + "has_distribution_limit", + "distribution_mode", + "has_organization_limit", + "base_price_factory", + "base_price_cooperative", + "final_price", + "is_closed", + "closed_at", + "limit_by_herd_size", + "pos_sale_type", + ] + + for field in fields: + setattr(instance, field, validated_data.get(field, getattr(instance, field))) + instance.save() # update assigned organization many to many