From 9c8a459dd477ff97932e785273d7b5a7665a1e98 Mon Sep 17 00:00:00 2001 From: "dmitriy.selischev" Date: Mon, 3 Jul 2017 21:46:36 +0300 Subject: [PATCH 1/2] Fixed serialization for iterable payload --- api_commons/dto.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api_commons/dto.py b/api_commons/dto.py index 2406923..4fd763d 100644 --- a/api_commons/dto.py +++ b/api_commons/dto.py @@ -20,7 +20,7 @@ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - +from collections import Iterable from django.conf import settings from rest_framework.fields import empty, Field from rest_framework.serializers import Serializer @@ -95,6 +95,8 @@ def to_dict(self): serialized_payload = self.payload if isinstance(self.payload, BaseDto): serialized_payload = self.payload.to_representation(self.payload) + if isinstance(self.payload, Iterable): + serialized_payload = list([p.to_representation(p) for p in self.payload]) return { "payload": serialized_payload, "service": self.service.to_dict() From 4a2a1be584b7f5f49189dc30880515b23ab6c606 Mon Sep 17 00:00:00 2001 From: DmitriySelischev Date: Tue, 4 Jul 2017 02:06:51 +0300 Subject: [PATCH 2/2] Payload serialization for iterable non BaseDto inherited objects --- api_commons/dto.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api_commons/dto.py b/api_commons/dto.py index 4fd763d..6204dbb 100644 --- a/api_commons/dto.py +++ b/api_commons/dto.py @@ -96,7 +96,7 @@ def to_dict(self): if isinstance(self.payload, BaseDto): serialized_payload = self.payload.to_representation(self.payload) if isinstance(self.payload, Iterable): - serialized_payload = list([p.to_representation(p) for p in self.payload]) + serialized_payload = list([(p.to_representation(p) if isinstance(p, BaseDto) else p) for p in self.payload]) return { "payload": serialized_payload, "service": self.service.to_dict()