From a429a9cddc3f9ef4d0404e4f232799a0595fd97d Mon Sep 17 00:00:00 2001 From: mohsentaba Date: Tue, 7 Jul 2026 15:15:28 +0330 Subject: [PATCH] upload problem fixed --- apps/hadis/serializers/serializers_admin.py | 25 ++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/apps/hadis/serializers/serializers_admin.py b/apps/hadis/serializers/serializers_admin.py index 802ef2d..a77f5b5 100644 --- a/apps/hadis/serializers/serializers_admin.py +++ b/apps/hadis/serializers/serializers_admin.py @@ -12,6 +12,21 @@ from ..models import ( from .category import LocalizedField +def safe_copy_data(data): + if hasattr(data, "lists"): + new_data = {} + for key, values in data.lists(): + if key in ["delete_image_ids", "uploaded_images"]: + new_data[key] = values + else: + new_data[key] = values[0] if values else None + return new_data + elif hasattr(data, "copy"): + return data.copy() + else: + return dict(data) + + class AbsoluteImageField(serializers.ImageField): def to_representation(self, value): if not value: @@ -113,12 +128,12 @@ class AdminHadisCollectionSerializer(serializers.ModelSerializer): read_only_fields = ["id", "created_at", "updated_at"] def to_internal_value(self, data): - mutable_data = data.copy() if hasattr(data, "copy") else data + mutable_data = safe_copy_data(data) thumbnail = mutable_data.get("thumbnail") if hasattr(mutable_data, "get") else None if thumbnail and hasattr(thumbnail, "read"): compressed_bytes = maybe_compress_uploaded_file(thumbnail) if compressed_bytes is not None: - mutable_data = mutable_data.copy() if hasattr(mutable_data, "copy") else mutable_data + mutable_data = safe_copy_data(mutable_data) mutable_data["thumbnail"] = SimpleUploadedFile( name=getattr(thumbnail, "name", "image"), content=compressed_bytes, @@ -329,7 +344,7 @@ class AdminHadisCorrectionSerializer(serializers.ModelSerializer): def to_internal_value(self, data): import json - data = data.copy() if hasattr(data, "copy") else dict(data) + data = safe_copy_data(data) for json_field in ["title", "translation", "links"]: val = data.get(json_field) if isinstance(val, str): @@ -446,7 +461,7 @@ class AdminHadisInterpretationSerializer(serializers.ModelSerializer): def to_internal_value(self, data): import json - data = data.copy() if hasattr(data, "copy") else dict(data) + data = safe_copy_data(data) for json_field in ["title", "translation", "links"]: val = data.get(json_field) if isinstance(val, str): @@ -1069,7 +1084,7 @@ class AdminTransmitterOriginalTextSerializer(serializers.ModelSerializer): def to_internal_value(self, data): import json - data = data.copy() if hasattr(data, "copy") else dict(data) + data = safe_copy_data(data) for json_field in ["title", "text", "translation"]: val = data.get(json_field) if isinstance(val, str):