.. module:: flask_potion .. _sec_filters: ======= Filters ======= Filter expressions ------------------ .. versionchanged:: 0.11 ``Meta.allowed_filters`` has been renamed to ``Meta.filters`` and the format for filter expressions has changed. ``Meta.filters`` may contain an expression used to specify which properties of items belonging to a resource can be filtered, and how. The `filters` expression can be a :class:`bool` or a :class:`dict` keyed by field names. The values of the :class:`dict` can be either a :class:`bool` or a list of filter names. The ``'*'`` attribute is a wildcard for any remaining field names. For example, the following allows all filters: :: filters = True The following allows filtering on the ``"name"`` field: :: filters = { "name": True } The following allows filtering by equals and not equals on the ``"name"`` field: :: filters = { "name": ['eq', 'ne'] } In addition it is also possible to specify custom filters this way: :: filters = { "name": { "text": MyTextFilter }, "*": True } Built-in default filters ------------------------ Filters are implemented for each contributed backend individually. The following filter classes are implemented for most or all backends: ============= ======================================== ============================================ ================================================================================================================================================================================================================================================ Name Filter class Description Used with ============= ======================================== ============================================ ================================================================================================================================================================================================================================================ --- :class:`filters.EqualFilter` Equal :class:`fields.Boolean`, :class:`fields.String`, :class:`fields.Integer`, :class:`fields.Number`, :class:`fields.ToOne`, :class:`fields.Date`, :class:`fields.DateTime`, :class:`fields.DateString`, :class:`fields.DateTimeString` ne :class:`filters.NotEqualFilter` Not equal :class:`fields.Boolean`, :class:`fields.String`, :class:`fields.Integer`, :class:`fields.Number`, :class:`fields.ToOne` in :class:`filters.InFilter` In (expects an Array) :class:`fields.String`, :class:`fields.Integer`, :class:`fields.Number`, :class:`fields.Date`, :class:`fields.DateTime`, :class:`fields.DateString`, :class:`fields.DateTimeString` contains :class:`filters.ContainsFilter` Contains :class:`fields.Array`, :class:`fields.ToMany` lt :class:`filters.LessThanFilter` Less than :class:`fields.String`, :class:`fields.Integer`, :class:`fields.Number`, :class:`fields.Date`, :class:`fields.DateTime`, :class:`fields.DateString`, :class:`fields.DateTimeString` gt :class:`filters.GreaterThanFilter` Greater than :class:`fields.String`, :class:`fields.Integer`, :class:`fields.Number`, :class:`fields.Date`, :class:`fields.DateTime`, :class:`fields.DateString`, :class:`fields.DateTimeString` lte :class:`filters.LessThanEqualFilter` Less than or equal :class:`fields.String`, :class:`fields.Integer`, :class:`fields.Number`, :class:`fields.Date`, :class:`fields.DateTime`, :class:`fields.DateString`, :class:`fields.DateTimeString` gte :class:`filters.GreaterThanEqualFilter` Greater than or equal :class:`fields.String`, :class:`fields.Integer`, :class:`fields.Number`, :class:`fields.Date`, :class:`fields.DateTime`, :class:`fields.DateString`, :class:`fields.DateTimeString` contains :class:`filters.StringContainsFilter` Contains (String) :class:`fields.String` icontains :class:`filters.StringIContainsFilter` Contains (String, case-insensitive) :class:`fields.String` startswith :class:`filters.StartsWithFilter` Starts with :class:`fields.String` endswith :class:`filters.EndsWithFilter` Ends with :class:`fields.String` istartswith :class:`filters.IStartsWithFilter` Starts with (case-insensitive) :class:`fields.String` iendswith :class:`filters.IEndsWithFilter` Ends with (case-insensitive) :class:`fields.String` between :class:`filters.DateBetweenFilter` Date between :class:`fields.Date`, :class:`fields.DateTime`, :class:`fields.DateString`, :class:`fields.DateTimeString` ============= ======================================== ============================================ ================================================================================================================================================================================================================================================ .. note:: :class:`filters.EqualFilter` uses both the keys ``'eq'`` and ``None``. This is so that you can write an equality comparison both ways: :: GET /user?where={"name": "foo"} GET /user?where={"name": {"$eq": "foo"}} .. module:: flask_potion.filters :class:`filters.BaseFilter` --------------------------- .. versionadded:: 0.11 .. autoclass:: BaseFilter :members: