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)
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
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)
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)
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
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_
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
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
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
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