Have Serializer.serialize take a generic **kwargs dict, and BaseResource.serialize take a request.

This commit is contained in:
Mjumbe Wawatu Poe 2012-08-25 01:45:14 -04:00
parent 239d8c6c4d
commit ef952c9b05
2 changed files with 17 additions and 11 deletions

View File

@ -33,6 +33,16 @@ class BaseResource(Serializer):
""" """
return self.serialize(obj) return self.serialize(obj)
def serialize(self, obj, request=None, **kwargs):
"""
Convert the resource into a serializable representation.
"""
# Request from related serializer.
if request is not None:
self.request = request
return super(BaseResource, self).serialize(obj, request=request, **kwargs)
class Resource(BaseResource): class Resource(BaseResource):
""" """

View File

@ -96,7 +96,7 @@ class Serializer(object):
""" """
The maximum depth to serialize to, or `None`. The maximum depth to serialize to, or `None`.
""" """
parent = None parent = None
""" """
A reference to the root serializer when descending down into fields. A reference to the root serializer when descending down into fields.
@ -169,7 +169,7 @@ class Serializer(object):
""" """
return self.rename.get(smart_str(key), smart_str(key)) return self.rename.get(smart_str(key), smart_str(key))
def serialize_val(self, key, obj, related_info): def serialize_val(self, key, obj, related_info, **kwargs):
""" """
Convert a model field or dict value into a serializable representation. Convert a model field or dict value into a serializable representation.
""" """
@ -189,7 +189,7 @@ class Serializer(object):
stack.append(obj) stack.append(obj)
return related_serializer(depth=depth, stack=stack).serialize( return related_serializer(depth=depth, stack=stack).serialize(
obj, request=getattr(self, 'request', None)) obj, **kwargs)
def serialize_max_depth(self, obj): def serialize_max_depth(self, obj):
""" """
@ -205,7 +205,7 @@ class Serializer(object):
""" """
raise _SkipField raise _SkipField
def serialize_model(self, instance): def serialize_model(self, instance, **kwargs):
""" """
Given a model instance or dict, serialize it to a dict.. Given a model instance or dict, serialize it to a dict..
""" """
@ -232,7 +232,7 @@ class Serializer(object):
continue continue
key = self.serialize_key(fname) key = self.serialize_key(fname)
val = self.serialize_val(fname, obj, related_info) val = self.serialize_val(fname, obj, related_info, **kwargs)
data[key] = val data[key] = val
except _SkipField: except _SkipField:
pass pass
@ -263,18 +263,14 @@ class Serializer(object):
""" """
return smart_unicode(obj, strings_only=True) return smart_unicode(obj, strings_only=True)
def serialize(self, obj, request=None): def serialize(self, obj, **kwargs):
""" """
Convert any object into a serializable representation. Convert any object into a serializable representation.
""" """
# Request from related serializer.
if request is not None:
self.request = request
if isinstance(obj, (dict, models.Model)): if isinstance(obj, (dict, models.Model)):
# Model instances & dictionaries # Model instances & dictionaries
return self.serialize_model(obj) return self.serialize_model(obj, **kwargs)
elif isinstance(obj, (tuple, list, set, QuerySet, RawQuerySet, types.GeneratorType)): elif isinstance(obj, (tuple, list, set, QuerySet, RawQuerySet, types.GeneratorType)):
# basic iterables # basic iterables
return self.serialize_iter(obj) return self.serialize_iter(obj)