Put default files=None back on BaseSerializer.from_native

* In ListField and DictField methods, place field check before list or dict construction
This commit is contained in:
Steven Cummings 2013-12-13 23:00:54 -06:00
parent b0027e52fa
commit f21f009fd1
2 changed files with 9 additions and 20 deletions

View File

@ -6,12 +6,6 @@ from .fields import WritableField
from .serializers import BaseSerializer
def field_or_serializer_from_native(field_or_serializer, data):
if isinstance(field_or_serializer, BaseSerializer):
return field_or_serializer.from_native(data, None)
return field_or_serializer.from_native(data)
class ListField(WritableField):
"""
A field whose values are lists of items described by the given item field. The item field can
@ -23,18 +17,17 @@ class ListField(WritableField):
self.item_field = item_field
def to_native(self, obj):
if obj:
if self.item_field and obj:
return [
self.item_field.to_native(item) if self.item_field else item
self.item_field.to_native(item)
for item in obj
]
return obj
def from_native(self, data):
if data:
if self.item_field and data:
return [
field_or_serializer_from_native(self.item_field, item_data)
if self.item_field else item_data
self.item_field.from_native(item_data)
for item_data in data
]
return data
@ -51,21 +44,17 @@ class DictField(WritableField):
self.value_field = value_field
def to_native(self, obj):
if obj:
if self.value_field and obj:
return dict(
(key, self.value_field.to_native(value) if self.value_field else value)
(unicode(key), self.value_field.to_native(value))
for key, value in obj.items()
)
return obj
def from_native(self, data):
if data:
if self.value_field and data:
return dict(
(
unicode(key),
field_or_serializer_from_native(self.value_field, value)
if self.value_field else value
)
(unicode(key), self.value_field.from_native(value))
for key, value in data.items()
)
return data

View File

@ -331,7 +331,7 @@ class BaseSerializer(WritableField):
return ret
def from_native(self, data, files):
def from_native(self, data, files=None):
"""
Deserialize primitives -> objects.
"""