Пример #1
0
    def deserialize(self, cstruct=colander.null):
        """
        Deserialize and validate the QuerySchema fields and try to deserialize and
        get the native value of additional filds (field filters) that may be present
        on the cstruct.

        e.g:: ?exclude_id=a,b&deleted=true -> {'exclude_id': ['a', 'b'], deleted: True}
        """
        values = {}

        schema_values = super().deserialize(cstruct)
        if schema_values is colander.drop:
            return schema_values

        # Deserialize querystring field filters (see docstring e.g)
        for k, v in cstruct.items():
            # Deserialize lists used on contains_ and contains_any_ filters
            if k.startswith("contains_"):
                as_list = native_value(v)

                if not isinstance(as_list, list):
                    values[k] = [as_list]
                else:
                    values[k] = as_list

            # Deserialize lists used on in_ and exclude_ filters
            elif k.startswith("in_") or k.startswith("exclude_"):
                as_list = FieldList().deserialize(v)
                values[k] = [native_value(v) for v in as_list]
            else:
                values[k] = native_value(v)

        values.update(schema_values)
        return values
Пример #2
0
class PluralQuerySchema(QuerySchema):
    """Querystring schema used with plural endpoints."""

    _limit = QueryField(colander.Integer(), validator=positive_big_integer)
    _sort = FieldList()
    _token = QueryField(colander.String())
    _since = QueryField(colander.Integer(), validator=positive_big_integer)
    _to = QueryField(colander.Integer(), validator=positive_big_integer)
    _before = QueryField(colander.Integer(), validator=positive_big_integer)
    id = QueryField(colander.String())
    last_modified = QueryField(colander.Integer(), validator=positive_big_integer)
Пример #3
0
class CollectionGetQuerySchema(CollectionQuerySchema):
    """Querystring schema for GET collection requests."""

    _fields = FieldList()
Пример #4
0
class RecordGetQuerySchema(QuerySchema):
    """Querystring schema for GET record requests."""

    _fields = FieldList()
Пример #5
0
class PluralGetQuerySchema(PluralQuerySchema):
    """Querystring schema for GET plural endpoints requests."""

    _fields = FieldList()
Пример #6
0
class ObjectGetQuerySchema(QuerySchema):
    """Querystring schema for GET object requests."""

    _fields = FieldList()