mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-07-13 17:52:19 +03:00
changing django_filters
types in the ES filters by graphene
types
This commit is contained in:
parent
fc186ea23d
commit
5b4d8144ee
|
@ -1,15 +1,13 @@
|
|||
"""Filters to ElasticSearch"""
|
||||
from collections import OrderedDict
|
||||
from django_filters import CharFilter
|
||||
from elasticsearch_dsl import Q
|
||||
from graphene import String
|
||||
|
||||
|
||||
class StringFilterES(object): # pylint: disable=R0902
|
||||
"""String Fields specific to ElasticSearch."""
|
||||
|
||||
default_expr = 'contain'
|
||||
filter_class = CharFilter
|
||||
|
||||
variants = {
|
||||
"contain": lambda name, value: Q('match',
|
||||
**{name: {
|
||||
|
@ -27,6 +25,7 @@ class StringFilterES(object): # pylint: disable=R0902
|
|||
"""
|
||||
assert name or attr, "At least the field name or the field attr should be passed"
|
||||
self.field_name = name or attr.replace('.', '_')
|
||||
self.argument = String().Argument()
|
||||
self.fields = self.generate_fields()
|
||||
|
||||
def generate_fields(self):
|
||||
|
@ -40,6 +39,6 @@ class StringFilterES(object): # pylint: disable=R0902
|
|||
for variant in self.variants:
|
||||
variant_name = self.field_name if variant in ["default", self.default_expr] \
|
||||
else "%s_%s" % (self.field_name, variant)
|
||||
fields[variant_name] = self.filter_class(field_name=variant_name)
|
||||
fields[variant_name] = self.argument
|
||||
|
||||
return fields
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import six
|
||||
from graphene import Argument
|
||||
|
||||
from .filterset import custom_filterset_factory, setup_filterset
|
||||
|
||||
|
@ -12,8 +13,13 @@ def get_filtering_args_from_filterset(filterset_class, type):
|
|||
|
||||
args = {}
|
||||
for name, filter_field in six.iteritems(filterset_class.base_filters):
|
||||
|
||||
if not isinstance(filter_field, Argument):
|
||||
field_type = convert_form_field(filter_field.field).Argument()
|
||||
field_type.description = filter_field.label
|
||||
else:
|
||||
field_type = filter_field
|
||||
|
||||
args[name] = field_type
|
||||
|
||||
return args
|
||||
|
|
Loading…
Reference in New Issue
Block a user