File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -152,5 +152,8 @@ def adapt(self, data=None):
152152 for field_name , field in self .fields .iteritems ():
153153 value = field .get_attribute (data or self .data )
154154 adapted_value = field .adapt (value )
155- setattr (obj , field_name , adapted_value )
155+ if isinstance (obj , collections .Mapping ):
156+ obj [field_name ] = adapted_value
157+ else :
158+ setattr (obj , field_name , adapted_value )
156159 return obj
Original file line number Diff line number Diff line change @@ -29,3 +29,11 @@ class Meta(object):
2929 model = outputs .Customer
3030
3131 address = AddressAdapter (source = '*' )
32+
33+
34+ class PersonDictAdapter (adapter .Adapter ):
35+ class Meta (object ):
36+ model = dict
37+
38+ first_name = adapter .Field (source = 'first' )
39+ last_name = adapter .Field (source = 'last' )
Original file line number Diff line number Diff line change 1111
1212
1313class AdapterTest (unittest .TestCase ):
14- def test_object (self ):
14+ def test_object_to_object (self ):
1515 data = inputs .Customer (** {
1616 'first_name' : 'Betty' ,
1717 'last_name' : 'Gowin' ,
@@ -44,3 +44,15 @@ def test_object(self):
4444 self .assertEqual (actual .address .city , expected .address .city )
4545 self .assertEqual (actual .address .region , expected .address .region )
4646 self .assertEqual (actual .address .country , expected .address .country )
47+
48+ def test_dict_to_dict (self ):
49+ data = {
50+ 'first' : 'Jacquelyn' ,
51+ 'last' : 'Phillips' ,
52+ }
53+ actual = adapters .PersonDictAdapter ().adapt (data )
54+ expected = {
55+ 'first_name' : 'Jacquelyn' ,
56+ 'last_name' : 'Phillips' ,
57+ }
58+ self .assertDictEqual (actual , expected )
You can’t perform that action at this time.
0 commit comments