Пример #1
0
 def _deserialize(self, value):
     if utils.is_indexable_but_not_string(value) and not isinstance(value, dict):
         # Convert all instances in typed list to container type
         return [self.container.deserialize(each) for each in value]
     if value is None:
         return []
     return [self.container.deserialize(value)]
Пример #2
0
 def _serialize(self, value, attr, obj):
     if utils.is_indexable_but_not_string(value) and not isinstance(value, dict):
         return [self.container.serialize(idx, value) for idx
                 in range(len(value))]
     if value is None:
         return self.default
     return [self.container.serialize(attr, obj)]
Пример #3
0
def _get_value_for_key(key, obj, default):
    if utils.is_indexable_but_not_string(obj):
        try:
            return obj[key]
        except KeyError:
            return default
    if hasattr(obj, key):
        return getattr(obj, key)
    return default
Пример #4
0
def _get_value_for_key(key, obj, default):
    if utils.is_indexable_but_not_string(obj):
        try:
            return obj[key]
        except KeyError:
            return default
    if hasattr(obj, key):
        return getattr(obj, key)
    return default
Пример #5
0
def _get_value_for_key(key, obj, default):
    if isinstance(key, basestring) and hasattr(obj, key):
        return getattr(obj, key)
    if utils.is_indexable_but_not_string(obj):
        try:
            return obj[key]
        except KeyError:
            return default
    return default
Пример #6
0
    def output(self, key, data):
        value = self.get_value(key, data)
        # we cannot really test for external dict behavior
        if utils.is_indexable_but_not_string(value) and not isinstance(value, dict):
            # Convert all instances in typed list to container type
            return [self.container.output(idx, value) for idx
                    in range(len(value))]

        if value is None:
            return self.default

        return [marshal(value, self.container.nested)]
Пример #7
0
    def output(self, key, data):
        value = self.get_value(key, data)
        # we cannot really test for external dict behavior
        if utils.is_indexable_but_not_string(value) and not isinstance(
                value, dict):
            # Convert all instances in typed list to container type
            return [
                self.container.output(idx, value) for idx in range(len(value))
            ]

        if value is None:
            return self.default

        return [marshal(value, self.container.nested)]