Esempio n. 1
0
    def _invoke_processors(self, tag_name, raw, data, many):
        for attr_name in self.__processors__[(tag_name, raw)]:
            # This will be a bound method.
            processor = getattr(self, attr_name)

            # It's probably not worth the extra LoC to hoist this branch out of
            # the loop.
            if raw:
                data = utils.if_none(processor(data, many), data)
            elif many:
                data = [utils.if_none(processor(item), item) for item in data]
            else:
                data = utils.if_none(processor(data), data)

        return data
Esempio n. 2
0
    def _invoke_processors(self, tag_name, pass_many, data, many, original_data=None):
        for attr_name in self.__processors__[(tag_name, pass_many)]:
            # This will be a bound method.
            processor = getattr(self, attr_name)

            processor_kwargs = processor.__marshmallow_kwargs__[(tag_name, pass_many)]
            pass_original = processor_kwargs.get('pass_original', False)

            if pass_many:
                if pass_original:
                    data = utils.if_none(processor(data, many, original_data), data)
                else:
                    data = utils.if_none(processor(data, many), data)
            elif many:
                if pass_original:
                    data = [utils.if_none(processor(item, original_data), item)
                            for item in data]
                else:
                    data = [utils.if_none(processor(item), item) for item in data]
            else:
                if pass_original:
                    data = utils.if_none(processor(data, original_data), data)
                else:
                    data = utils.if_none(processor(data), data)
        return data
Esempio n. 3
0
    def _invoke_processors(self, tag_name, pass_many, data, many, original_data=None):
        for attr_name in self.__processors__[(tag_name, pass_many)]:
            # This will be a bound method.
            processor = getattr(self, attr_name)

            processor_kwargs = processor.__marshmallow_kwargs__[(tag_name, pass_many)]
            pass_original = processor_kwargs.get('pass_original', False)

            if pass_many:
                if pass_original:
                    data = utils.if_none(processor(data, many, original_data), data)
                else:
                    data = utils.if_none(processor(data, many), data)
            elif many:
                if pass_original:
                    data = [utils.if_none(processor(item, original_data), item)
                            for item in data]
                else:
                    data = [utils.if_none(processor(item), item) for item in data]
            else:
                if pass_original:
                    data = utils.if_none(processor(data, original_data), data)
                else:
                    data = utils.if_none(processor(data), data)
        return data
Esempio n. 4
0
    async def _async_invoke_processors(self,
                                       tag_name,
                                       pass_many,
                                       data,
                                       many,
                                       original_data=None):
        """make processors async
        the processors:
            `async_pre_load`, `async_post_load`
            `async_pre_dump`, `async_post_dump` (to do)
        """
        for attr_name in self.__processors__[(tag_name, pass_many)]:
            # This will be a bound method.
            processor = getattr(self, attr_name)

            processor_kwargs = processor.__marshmallow_kwargs__[(tag_name,
                                                                 pass_many)]
            pass_original = processor_kwargs.get('pass_original', False)

            if pass_many:
                if pass_original:
                    data = utils.if_none(
                        await processor(data, many, original_data), data)
                else:
                    data = utils.if_none(await processor(data, many), data)
            elif many:
                if pass_original:
                    data = [
                        utils.if_none(await processor(item, original_data),
                                      item) for item in data
                    ]
                else:
                    data = [
                        utils.if_none(await processor(item), item)
                        for item in data
                    ]
            else:
                if pass_original:
                    data = utils.if_none(await processor(data, original_data),
                                         data)
                else:
                    data = utils.if_none(await processor(data), data)
        return data