mirror of
https://github.com/graphql-python/graphene-django.git
synced 2024-11-22 17:47:12 +03:00
Add back support for django-filter < 2
This commit is contained in:
parent
9152075ed8
commit
d8bdda94df
|
@ -45,6 +45,8 @@ matrix:
|
||||||
env: TEST_TYPE=build DJANGO_VERSION=2.1
|
env: TEST_TYPE=build DJANGO_VERSION=2.1
|
||||||
- python: '3.6'
|
- python: '3.6'
|
||||||
env: TEST_TYPE=build DJANGO_VERSION=2.1
|
env: TEST_TYPE=build DJANGO_VERSION=2.1
|
||||||
|
- python: '2.7'
|
||||||
|
env: TEST_TYPE=lint
|
||||||
- python: '3.6'
|
- python: '3.6'
|
||||||
env: TEST_TYPE=lint
|
env: TEST_TYPE=lint
|
||||||
deploy:
|
deploy:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django_filters import Filter, MultipleChoiceFilter
|
from django_filters import Filter, MultipleChoiceFilter, VERSION
|
||||||
from django_filters.filterset import BaseFilterSet, FilterSet
|
from django_filters.filterset import BaseFilterSet, FilterSet
|
||||||
from django_filters.filterset import FILTER_FOR_DBFIELD_DEFAULTS
|
from django_filters.filterset import FILTER_FOR_DBFIELD_DEFAULTS
|
||||||
|
|
||||||
|
@ -51,6 +51,37 @@ class GrapheneFilterSetMixin(BaseFilterSet):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# To support a Django 1.11 + Python 2.7 combination django-filter must be
|
||||||
|
# < 2.x.x. To support the earlier version of django-filter, the
|
||||||
|
# filter_for_reverse_field method must be present on GrapheneFilterSetMixin and
|
||||||
|
# must not be present for later versions of django-filter.
|
||||||
|
if VERSION[0] < 2:
|
||||||
|
from django.utils.text import capfirst
|
||||||
|
|
||||||
|
class GrapheneFilterSetMixinPython2(GrapheneFilterSetMixin):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def filter_for_reverse_field(cls, f, name):
|
||||||
|
"""Handles retrieving filters for reverse relationships
|
||||||
|
We override the default implementation so that we can handle
|
||||||
|
Global IDs (the default implementation expects database
|
||||||
|
primary keys)
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
rel = f.field.remote_field
|
||||||
|
except AttributeError:
|
||||||
|
rel = f.field.rel
|
||||||
|
default = {"name": name, "label": capfirst(rel.related_name)}
|
||||||
|
if rel.multiple:
|
||||||
|
# For to-many relationships
|
||||||
|
return GlobalIDMultipleChoiceFilter(**default)
|
||||||
|
else:
|
||||||
|
# For to-one relationships
|
||||||
|
return GlobalIDFilter(**default)
|
||||||
|
|
||||||
|
GrapheneFilterSetMixin = GrapheneFilterSetMixinPython2
|
||||||
|
|
||||||
|
|
||||||
def setup_filterset(filterset_class):
|
def setup_filterset(filterset_class):
|
||||||
""" Wrap a provided filterset in Graphene-specific functionality
|
""" Wrap a provided filterset in Graphene-specific functionality
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user