예제 #1
0
        return fields


class IndicoSchema(mm.Schema):
    @post_dump(pass_many=True, pass_original=True)
    def _call_post_dump_signal(self, data, many, orig):
        data_list = data if many else [data]
        orig_list = orig if many else [orig]
        signals.plugin.schema_post_dump.send(type(self), data=data_list, orig=orig_list, many=many)
        return data_list if many else data_list[0]

    @pre_load
    def _call_pre_load_signal(self, data):
        signals.plugin.schema_pre_load.send(type(self), data=data)
        return data


class _IndicoModelSchemaOpts(SchemaOpts):
    def __init__(self, meta, **kwargs):
        super(_IndicoModelSchemaOpts, self).__init__(meta, **kwargs)
        self.model_converter = getattr(meta, 'model_converter', IndicoModelConverter)


class IndicoModelSchema(MSQLAModelSchema, IndicoSchema):
    OPTIONS_CLASS = _IndicoModelSchemaOpts


mm.Schema = IndicoSchema
mm.ModelSchema = IndicoModelSchema
webargs_flask_parser.schema_class = IndicoSchema
예제 #2
0
        data_list = data if many else [data]
        orig_list = orig if many else [orig]
        signals.plugin.schema_post_dump.send(type(self), data=data_list, orig=orig_list, many=many)
        return data_list if many else data_list[0]

    @pre_load
    def _call_pre_load_signal(self, data, **kwargs):
        signals.plugin.schema_pre_load.send(type(self), data=data)
        return data

    @post_load
    def _call_post_load_signal(self, data, **kwargs):
        signals.plugin.schema_post_load.send(type(self), data=data)
        return data


class _IndicoModelSchemaOpts(SchemaOpts):
    def __init__(self, meta, **kwargs):
        super().__init__(meta, **kwargs)
        self.model_converter = getattr(meta, 'model_converter', IndicoModelConverter)


class IndicoModelSchema(MSQLAModelSchema, IndicoSchema):
    OPTIONS_CLASS = _IndicoModelSchemaOpts


mm.Schema = IndicoSchema
mm.ModelSchema = IndicoModelSchema
webargs_flask_parser.schema_class = IndicoSchema  # just in case someone uses the wrong import
indico_webargs_flask_parser.schema_class = IndicoSchema
예제 #3
0
            return default

        # XXX: To allow renaming/aliasing of fields we need to let mm-sqlalchemy
        # generate all fields from the models and leave it up to mm itself to
        # exclude fields we don't care about
        kwargs['fields'] = ()
        fields = super(fossirModelConverter,
                       self).fields_for_model(model, *args, **kwargs)
        for key, field in fields.items():
            new_key = _get_from_mro('marshmallow_aliases', key)
            if new_key:
                del fields[key]
                fields[new_key] = field
                if field.attribute is None:
                    field.attribute = key
        return fields


class _fossirSchemaOpts(SchemaOpts):
    def __init__(self, meta):
        super(_fossirSchemaOpts, self).__init__(meta)
        self.model_converter = getattr(meta, 'model_converter',
                                       fossirModelConverter)


class fossirModelSchema(mm.ModelSchema):
    OPTIONS_CLASS = _fossirSchemaOpts


mm.ModelSchema = fossirModelSchema