Skip to content

Commit 7f25c51

Browse files
committed
Removal of specific condition in the separate method. Issue #21
1 parent 7a90943 commit 7f25c51

File tree

1 file changed

+16
-13
lines changed

1 file changed

+16
-13
lines changed

domain_models/fields.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,19 @@ def _converter(self, value):
9393
"""
9494
return value
9595

96+
@staticmethod
97+
def _get_model_instance(model_cls, data):
98+
"""Convert dict into object of class of passed model.
99+
100+
:param class model_cls:
101+
:param object data:
102+
:rtype DomainModel:
103+
"""
104+
if not isinstance(data, (model_cls, dict)):
105+
raise TypeError('{0} is not valid type, instance of '
106+
'{1} or dict required'.format(data, model_cls))
107+
return model_cls(**data) if isinstance(data, dict) else data
108+
96109

97110
class Bool(Field):
98111
"""Bool field."""
@@ -160,7 +173,6 @@ class Model(Field):
160173
def __init__(self, related_model_cls, default=None, required=False):
161174
"""Initializer."""
162175
super(Model, self).__init__(default=default, required=required)
163-
164176
self.related_model_cls = related_model_cls
165177

166178
def _converter(self, value):
@@ -169,14 +181,7 @@ def _converter(self, value):
169181
:param object value:
170182
:rtype object:
171183
"""
172-
value = self.related_model_cls(**value) if isinstance(value,
173-
dict) else value
174-
if not isinstance(value, self.related_model_cls):
175-
raise TypeError('{0} is not valid model instance, instance of '
176-
'{1} required'.format(value,
177-
self.related_model_cls))
178-
179-
return value
184+
return self._get_model_instance(self.related_model_cls, value)
180185

181186
def get_builtin_type(self, model):
182187
"""Return built-in type representation of Model.
@@ -203,10 +208,8 @@ def _converter(self, value):
203208
"""
204209
if type(value) is not self.related_model_cls.Collection:
205210
value = self.related_model_cls.Collection([
206-
self.related_model_cls(**item)
207-
if isinstance(item, dict)
208-
else item
209-
for item in value])
211+
self._get_model_instance(self.related_model_cls, item)
212+
for item in value])
210213
return value
211214

212215
def get_builtin_type(self, model):

0 commit comments

Comments
 (0)