Skip to content

Commit c0a8dd3

Browse files
author
Mike Hearing
committed
Mishandled lists with primitive types
1 parent 7c4568d commit c0a8dd3

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

pyrestorm/models.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from pyrestorm.exceptions import orm as orm_exceptions
66
from pyrestorm.manager import RestOrmManager
77

8+
primitives = [int, str, unicode, bool]
9+
810

911
class RestModelBase(type):
1012
# Called when class is imported got guarantee proper setup of child classes to parent
@@ -116,12 +118,15 @@ def _serialize_data(self, obj):
116118
continue
117119

118120
value_type = type(value)
119-
if value_type not in [int, str, unicode, bool]:
121+
if value_type not in primitives:
120122
# Nested structure
121123
if value_type == list:
122124
local_diff[key] = copy.deepcopy(value)
123125
for idx, inner_value in enumerate(value):
124-
local_diff[key][idx] = self._serialize_data(inner_value)
126+
if type(inner_value) not in primitives:
127+
local_diff[key][idx] = self._serialize_data(inner_value)
128+
else:
129+
local_diff[key][idx] = inner_value
125130
# Object/Dictionary
126131
else:
127132
self._serialize_data(value)

tests/test_models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def test_restmodel_nestedstructures(self):
7171
post = Post(title='Hello', body='World', userId=1)
7272
post.author = Author(name='Michael Hearing')
7373
post.comments = [Comment(body='Are we having fun yet?'), Comment(body='Hoe about now?')]
74+
post.fun_numbers = [1, 2, 3, 5, 7]
7475
post.meta = {'datetime': 'September 23, 2016'}
7576
post.save()
7677
self.assertEqual(post.id, 101)

0 commit comments

Comments
 (0)