Skip to content

Commit f921fdc

Browse files
committed
Support adapting to existing resource; close #26
1 parent 7348c4b commit f921fdc

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

adapter/adapter.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -152,16 +152,22 @@ def get_fields(self):
152152
return copy.deepcopy(self.declared_fields)
153153

154154
def adapt(self, data=None):
155-
meta = getattr(self, 'Meta', None)
156-
model_cls = getattr(meta, 'model', dict)
157-
obj = model_cls()
155+
instance = self.get_instance()
158156
for field_name, field in self.fields.iteritems():
159157
value = field.get_attribute(data or self.data)
160158
if value is undefined:
161159
continue
162160
adapted_value = field.adapt(value)
163-
if isinstance(obj, collections.Mapping):
164-
obj[field_name] = adapted_value
161+
if isinstance(instance, collections.Mapping):
162+
instance[field_name] = adapted_value
165163
else:
166-
setattr(obj, field_name, adapted_value)
167-
return obj
164+
setattr(instance, field_name, adapted_value)
165+
return instance
166+
167+
def get_instance(self):
168+
if self.instance:
169+
return self.instance
170+
else:
171+
meta = getattr(self, 'Meta', None)
172+
model_cls = getattr(meta, 'model', dict)
173+
return model_cls()

0 commit comments

Comments
 (0)