Example #1
0
 def __init__(self, serialize=None, deserialize=None, func=None, **kwargs):
     # Set dump_only and load_only based on arguments
     kwargs['dump_only'] = bool(serialize) and not bool(deserialize)
     kwargs['load_only'] = bool(deserialize) and not bool(serialize)
     super(Function, self).__init__(**kwargs)
     self.serialize_func = serialize and utils.callable_or_raise(serialize)
     self.deserialize_func = deserialize and utils.callable_or_raise(deserialize)
Example #2
0
 def __init__(self, func, deserialize=None, **kwargs):
     super(Function, self).__init__(**kwargs)
     self.func = utils.callable_or_raise(func)
     if deserialize:
         self.deserialize_func = utils.callable_or_raise(deserialize)
     else:
         self.deserialize_func = None
Example #3
0
 def __init__(self, func, deserialize=None, **kwargs):
     super(Function, self).__init__(**kwargs)
     self.func = utils.callable_or_raise(func)
     if deserialize:
         self.deserialize_func = utils.callable_or_raise(deserialize)
     else:
         self.deserialize_func = None
Example #4
0
 def __init__(self, serialize=None, deserialize=None, func=None, **kwargs):
     if func:
         warnings.warn('"func" argument of fields.Function is deprecated. '
                       'Use the "serialize" argument instead.', DeprecationWarning)
         serialize = func
     super(Function, self).__init__(**kwargs)
     self.serialize_func = self.func = serialize and utils.callable_or_raise(serialize)
     self.deserialize_func = deserialize and utils.callable_or_raise(deserialize)
Example #5
0
    def _serialize(self, value, attr, obj):
        if not self.serialize_method_name:
            return missing_

        method = utils.callable_or_raise(
            getattr(self.parent, self.serialize_method_name, None))
        return method(obj)
Example #6
0
 def _deserialize(self, value, attr, data):
     if self.deserialize_method_name:
         method = utils.callable_or_raise(
             getattr(self.parent, self.deserialize_method_name, None)
         )
         return method(value)
     return value
Example #7
0
 def _serialize(self, value, attr, obj):
     method = utils.callable_or_raise(getattr(self.parent, self.method_name, None))
     try:
         return method(obj)
     except AttributeError:
         pass
     return missing_
Example #8
0
 def _serialize(self, value, attr, obj):
     method = utils.callable_or_raise(getattr(self.parent, self.method_name, None))
     try:
         return method(obj)
     except AttributeError:
         pass
     return missing_
Example #9
0
 def _deserialize(self, value, attr, data):
     if self.deserialize_method_name:
         try:
             method = utils.callable_or_raise(
                 getattr(self.parent, self.deserialize_method_name, None))
             return method(value)
         except AttributeError:
             pass
     return value
Example #10
0
 def _deserialize(self, value, attr, data):
     if self.deserialize_method_name:
         try:
             method = utils.callable_or_raise(
                 getattr(self.parent, self.deserialize_method_name, None)
             )
             return method(value)
         except AttributeError:
             pass
     return value
Example #11
0
 def _super_serialize(self, value, attr, obj):
     """ This is essentially copying the functionality from the Marshmallow Method._serialize function,
     but we drop the AttributeError catches. """
     method = utils.callable_or_raise(getattr(self.parent, self.method_name, None))
     if len(utils.get_func_args(method)) > 2:
         if self.parent.context is None:
             msg = 'No context available for Method field {0!r}'.format(attr)
             raise MarshallingError(msg)
         return method(obj, self.parent.context)
     else:
         return method(obj)
 def _deserialize(self, value, attr, data):
     if self.deserialize_method_name:
         try:
             method = utils.callable_or_raise(
                 getattr(self.parent, self.deserialize_method_name, None))
             method_args_len = len(_get_func_args(method))
             if method_args_len > 2:
                 return method(value, data)
             return method(value)
         except AttributeError:
             pass
     return value
Example #13
0
 def _serialize(self, value, attr, obj):
     try:
         method = utils.callable_or_raise(getattr(self.parent, self.method_name, None))
         if len(utils.get_func_args(method)) > 2:
             if self.parent.context is None:
                 msg = 'No context available for Method field {0!r}'.format(attr)
                 raise MarshallingError(msg)
             return method(obj, self.parent.context)
         else:
             return method(obj)
     except AttributeError:
         pass