graphene_elastic.filter_backends.post_filter package

Submodules

graphene_elastic.filter_backends.post_filter.common module

class graphene_elastic.filter_backends.post_filter.common.PostFilterFilteringBackend(connection_field, args=None)[source]

Bases: BaseBackend, FilteringFilterMixin

Post filter filtering backend.

classmethod apply_filter(queryset, options=None, args=None, kwargs=None)[source]

Apply filter.

Parameters:
  • queryset

  • options

  • args

  • kwargs

Returns:

classmethod apply_query(queryset, options=None, args=None, kwargs=None)[source]

Apply query.

Parameters:
  • queryset

  • options

  • args

  • kwargs

Returns:

field_belongs_to(field_name)[source]

Check if given filter field belongs to the backend.

Parameters:

field_name

Returns:

filter(queryset)[source]

Filter.

property filter_args_mapping
property filter_fields

Filtering filter fields.

get_backend_query_fields(items, is_filterable_func, get_type_func)[source]

Fail proof override.

Parameters:
  • items

  • is_filterable_func

  • get_type_func

Returns:

get_field_lookup_param(field_name)[source]

Get field lookup param.

Parameters:

field_name

Returns:

get_field_options(field_name)[source]

Get field option params.

Parameters:

field_name

Returns:

get_field_type(field_name, field_value, base_field_type)[source]

Get field type.

Returns:

get_filter_query_params()[source]

Get query params to be filtered on.

We can either specify it like this:

query_params = {
‘category’: {

‘value’: ‘Elastic’,

}

}

Or using specific lookup:

query_params = {
‘category’: {

‘term’: ‘Elastic’, ‘range’: {

‘lower’: Decimal(‘3.0’)

}

}

}

Note, that value would only work on simple types (string, integer, decimal). For complex types you would have to use complex param anyway. Therefore, it should be forbidden to set default_lookup to a complex field type.

Sample values:

query_params = {
‘category’: {

‘value’: ‘Elastic’,

}

}

filter_fields = {
‘category’: {

‘field’: ‘category.raw’, ‘default_lookup’: ‘term’, ‘lookups’: (

‘term’, ‘terms’, ‘range’, ‘exists’, ‘prefix’, ‘wildcard’, ‘contains’, ‘in’, ‘gt’, ‘gte’, ‘lt’, ‘lte’, ‘starts_with’, ‘ends_with’, ‘is_null’, ‘exclude’

)

}

}

field_name = ‘category’

has_query_fields = True
prefix = 'postFilter'
prepare_filter_fields()[source]

Prepare filter fields.

Possible structures:

post_filter_fields = {
‘title’: {

‘field’: ‘title.raw’, ‘lookups’: [

LOOKUP_FILTER_TERM, LOOKUP_FILTER_TERMS, LOOKUP_FILTER_PREFIX, LOOKUP_FILTER_WILDCARD, LOOKUP_QUERY_IN, LOOKUP_QUERY_EXCLUDE,

], ‘default_lookup’: LOOKUP_FILTER_TERM,

}, ‘category’: ‘category.raw’,

}

We shall finally have:

post_filter_fields = {
‘title’: {

‘field’: ‘title.raw’, ‘lookups’: [

LOOKUP_FILTER_TERM, LOOKUP_FILTER_TERMS, LOOKUP_FILTER_PREFIX, LOOKUP_FILTER_WILDCARD, LOOKUP_QUERY_IN, LOOKUP_QUERY_EXCLUDE,

], ‘default_lookup’: LOOKUP_FILTER_TERM,

}, ‘category’: {

‘field’: ‘category.raw’, ‘lookups’: [

LOOKUP_FILTER_TERM, LOOKUP_FILTER_TERMS, LOOKUP_FILTER_PREFIX, LOOKUP_FILTER_WILDCARD, LOOKUP_QUERY_IN, LOOKUP_QUERY_EXCLUDE, … # All other lookups

], ‘default_lookup’: LOOKUP_FILTER_TERM,

}

}

prepare_query_params()[source]

Prepare query params.

Returns:

Module contents