Skip to content

Commit 880807d

Browse files
committed
Replacing django-filter detection with GRAPHENE_ENABLE_FILTERING setting
Also moving GRAPHENE_ORDER_BY_FIELD into settings.py which centralises use of django settings and their default values
1 parent 0f35f4d commit 880807d

File tree

9 files changed

+25
-26
lines changed

9 files changed

+25
-26
lines changed

graphene/contrib/django/filter/__init__.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
from graphene.contrib.django.utils import DJANGO_FILTER_INSTALLED
1+
from graphene.contrib.django import settings
22

3-
if not DJANGO_FILTER_INSTALLED:
3+
if not settings.GRAPHENE_ENABLE_FILTERING:
44
raise Exception(
5-
"Use of django filtering requires the django-filter package "
6-
"be installed. You can do so using `pip install django-filter`"
5+
"To make use of filtering you configure "
6+
"GRAPHENE_ENABLE_FILTERING=True. This will also require "
7+
"django-filter be installed"
78
)
89

910
from .fields import DjangoFilterConnectionField

graphene/contrib/django/filter/filterset.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import six
2-
from django.conf import settings
32
from django.db import models
43
from django.utils.text import capfirst
54
from django_filters import Filter, MultipleChoiceFilter
65
from django_filters.filterset import FilterSetMetaclass, FilterSet
76
from graphql_relay.node.node import from_global_id
87

8+
from graphene.contrib.django import settings
99
from graphene.contrib.django.forms import GlobalIDFormField, GlobalIDMultipleChoiceField
1010

1111

@@ -25,9 +25,6 @@ def filter(self, qs, value):
2525
return super(GlobalIDMultipleChoiceFilter, self).filter(qs, gids)
2626

2727

28-
ORDER_BY_FIELD = getattr(settings, 'GRAPHENE_ORDER_BY_FIELD', 'order_by')
29-
30-
3128
GRAPHENE_FILTER_SET_OVERRIDES = {
3229
models.AutoField: {
3330
'filter_class': GlobalIDFilter,
@@ -54,7 +51,7 @@ def __new__(cls, name, bases, attrs):
5451

5552

5653
class GrapheneFilterSetMixin(object):
57-
order_by_field = ORDER_BY_FIELD
54+
order_by_field = settings.GRAPHENE_ORDER_BY_FIELD
5855

5956
@classmethod
6057
def filter_for_reverse_field(cls, f, name):

graphene/contrib/django/options.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from .utils import DJANGO_FILTER_INSTALLED
1+
from graphene.contrib.django import settings
22
from ...core.classtypes.objecttype import ObjectTypeOptions
33
from ...relay.types import Node
44
from ...relay.utils import is_node
55

66
VALID_ATTRS = ('model', 'only_fields', 'exclude_fields')
77

8-
if DJANGO_FILTER_INSTALLED:
8+
if settings.GRAPHENE_ENABLE_FILTERING:
99
VALID_ATTRS += ('filter_fields', 'filter_order_by')
1010

1111

graphene/contrib/django/settings.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from django.conf import settings
2+
3+
GRAPHENE_ORDER_BY_FIELD = getattr(settings, 'GRAPHENE_ORDER_BY_FIELD', 'order_by')
4+
GRAPHENE_ENABLE_FILTERING = getattr(settings, 'GRAPHENE_ENABLE_FILTERING', False)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from graphene.contrib.django import settings
2+
3+
# Force filtering for tests
4+
settings.GRAPHENE_ENABLE_FILTERING = True

graphene/contrib/django/tests/filter/test_fields.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import pytest
22

33
from graphene import ObjectType, Schema
4-
from graphene.contrib.django.utils import DJANGO_FILTER_INSTALLED
4+
from graphene.contrib.django import settings
55
from graphene.relay import NodeField
66

77

@@ -10,7 +10,7 @@
1010
from graphene.contrib.django.tests.models import Article, Pet, Reporter
1111

1212
pytestmark = []
13-
if DJANGO_FILTER_INSTALLED:
13+
if settings.GRAPHENE_ENABLE_FILTERING:
1414
import django_filters
1515
from graphene.contrib.django.filter import (GlobalIDFilter, DjangoFilterConnectionField,
1616
GlobalIDMultipleChoiceFilter)

graphene/contrib/django/tests/filter/test_resolvers.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
11
import pytest
22
from django.core.exceptions import ImproperlyConfigured
33

4-
from graphene.contrib.django.utils import DJANGO_FILTER_INSTALLED
4+
from graphene.contrib.django import settings
5+
from graphene.contrib.django.tests.models import Reporter, Article
6+
from graphene.contrib.django.tests.test_resolvers import ReporterNode, ArticleNode
57

6-
if DJANGO_FILTER_INSTALLED:
8+
if settings.GRAPHENE_ENABLE_FILTERING:
79
from graphene.contrib.django.filter.resolvers import FilterConnectionResolver
810
from graphene.contrib.django.tests.filter.filters import ReporterFilter, ArticleFilter
911
else:
1012
pytestmark = pytest.mark.skipif(True, reason='django_filters not installed')
1113

12-
from graphene.contrib.django.tests.models import Reporter, Article
13-
from graphene.contrib.django.tests.test_resolvers import ReporterNode, ArticleNode
14-
1514

1615
def test_filter_get_filterset_class_explicit():
1716
reporter = Reporter(id=1, first_name='Cookie Monster')

graphene/contrib/django/types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
import six
44
from django.db import models
55

6+
from graphene.contrib.django import settings
67
from ...core.classtypes.objecttype import ObjectType, ObjectTypeMeta
78
from ...relay.types import Connection, Node, NodeMeta
8-
from .utils import DJANGO_FILTER_INSTALLED
99
from .converter import convert_django_field
1010
from .options import DjangoOptions
1111
from .utils import get_reverse_fields, maybe_queryset
@@ -104,7 +104,7 @@ def from_list(cls, iterable, *args, **kwargs):
104104

105105
django_node_meta_bases = (DjangoObjectTypeMeta, NodeMeta)
106106
# Only include filter functionality if available
107-
if DJANGO_FILTER_INSTALLED:
107+
if settings.GRAPHENE_ENABLE_FILTERING:
108108
django_node_meta_bases = (DjangoFilterObjectTypeMeta,) + django_node_meta_bases
109109

110110

graphene/contrib/django/utils.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,6 @@
77

88
from graphene import Argument, String
99

10-
try:
11-
import django_filters # noqa
12-
DJANGO_FILTER_INSTALLED = True
13-
except ImportError:
14-
DJANGO_FILTER_INSTALLED = False
15-
1610

1711
def get_type_for_model(schema, model):
1812
schema = schema

0 commit comments

Comments
 (0)