Reverting previous commit following comments by @syrusakbary

This commit is contained in:
Adam Charnock 2015-12-06 10:08:10 +00:00
parent 880807dd2f
commit 93e758dc13
9 changed files with 26 additions and 25 deletions

View File

@ -1,10 +1,9 @@
from graphene.contrib.django import settings from graphene.contrib.django.utils import DJANGO_FILTER_INSTALLED
if not settings.GRAPHENE_ENABLE_FILTERING: if not DJANGO_FILTER_INSTALLED:
raise Exception( raise Exception(
"To make use of filtering you configure " "Use of django filtering requires the django-filter package "
"GRAPHENE_ENABLE_FILTERING=True. This will also require " "be installed. You can do so using `pip install django-filter`"
"django-filter be installed"
) )
from .fields import DjangoFilterConnectionField from .fields import DjangoFilterConnectionField

View File

@ -1,11 +1,11 @@
import six import six
from django.conf import settings
from django.db import models from django.db import models
from django.utils.text import capfirst from django.utils.text import capfirst
from django_filters import Filter, MultipleChoiceFilter from django_filters import Filter, MultipleChoiceFilter
from django_filters.filterset import FilterSetMetaclass, FilterSet from django_filters.filterset import FilterSetMetaclass, FilterSet
from graphql_relay.node.node import from_global_id from graphql_relay.node.node import from_global_id
from graphene.contrib.django import settings
from graphene.contrib.django.forms import GlobalIDFormField, GlobalIDMultipleChoiceField from graphene.contrib.django.forms import GlobalIDFormField, GlobalIDMultipleChoiceField
@ -25,6 +25,9 @@ class GlobalIDMultipleChoiceFilter(MultipleChoiceFilter):
return super(GlobalIDMultipleChoiceFilter, self).filter(qs, gids) return super(GlobalIDMultipleChoiceFilter, self).filter(qs, gids)
ORDER_BY_FIELD = getattr(settings, 'GRAPHENE_ORDER_BY_FIELD', 'order_by')
GRAPHENE_FILTER_SET_OVERRIDES = { GRAPHENE_FILTER_SET_OVERRIDES = {
models.AutoField: { models.AutoField: {
'filter_class': GlobalIDFilter, 'filter_class': GlobalIDFilter,
@ -51,7 +54,7 @@ class GrapheneFilterSetMetaclass(FilterSetMetaclass):
class GrapheneFilterSetMixin(object): class GrapheneFilterSetMixin(object):
order_by_field = settings.GRAPHENE_ORDER_BY_FIELD order_by_field = ORDER_BY_FIELD
@classmethod @classmethod
def filter_for_reverse_field(cls, f, name): def filter_for_reverse_field(cls, f, name):

View File

@ -1,11 +1,11 @@
from graphene.contrib.django import settings from .utils import DJANGO_FILTER_INSTALLED
from ...core.classtypes.objecttype import ObjectTypeOptions from ...core.classtypes.objecttype import ObjectTypeOptions
from ...relay.types import Node from ...relay.types import Node
from ...relay.utils import is_node from ...relay.utils import is_node
VALID_ATTRS = ('model', 'only_fields', 'exclude_fields') VALID_ATTRS = ('model', 'only_fields', 'exclude_fields')
if settings.GRAPHENE_ENABLE_FILTERING: if DJANGO_FILTER_INSTALLED:
VALID_ATTRS += ('filter_fields', 'filter_order_by') VALID_ATTRS += ('filter_fields', 'filter_order_by')

View File

@ -1,4 +0,0 @@
from django.conf import settings
GRAPHENE_ORDER_BY_FIELD = getattr(settings, 'GRAPHENE_ORDER_BY_FIELD', 'order_by')
GRAPHENE_ENABLE_FILTERING = getattr(settings, 'GRAPHENE_ENABLE_FILTERING', False)

View File

@ -1,4 +0,0 @@
from graphene.contrib.django import settings
# Force filtering for tests
settings.GRAPHENE_ENABLE_FILTERING = True

View File

@ -1,7 +1,7 @@
import pytest import pytest
from graphene import ObjectType, Schema from graphene import ObjectType, Schema
from graphene.contrib.django import settings from graphene.contrib.django.utils import DJANGO_FILTER_INSTALLED
from graphene.relay import NodeField from graphene.relay import NodeField
@ -10,7 +10,7 @@ from graphene.contrib.django.forms import GlobalIDFormField, GlobalIDMultipleCho
from graphene.contrib.django.tests.models import Article, Pet, Reporter from graphene.contrib.django.tests.models import Article, Pet, Reporter
pytestmark = [] pytestmark = []
if settings.GRAPHENE_ENABLE_FILTERING: if DJANGO_FILTER_INSTALLED:
import django_filters import django_filters
from graphene.contrib.django.filter import (GlobalIDFilter, DjangoFilterConnectionField, from graphene.contrib.django.filter import (GlobalIDFilter, DjangoFilterConnectionField,
GlobalIDMultipleChoiceFilter) GlobalIDMultipleChoiceFilter)

View File

@ -1,16 +1,17 @@
import pytest import pytest
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from graphene.contrib.django import settings from graphene.contrib.django.utils import DJANGO_FILTER_INSTALLED
from graphene.contrib.django.tests.models import Reporter, Article
from graphene.contrib.django.tests.test_resolvers import ReporterNode, ArticleNode
if settings.GRAPHENE_ENABLE_FILTERING: if DJANGO_FILTER_INSTALLED:
from graphene.contrib.django.filter.resolvers import FilterConnectionResolver from graphene.contrib.django.filter.resolvers import FilterConnectionResolver
from graphene.contrib.django.tests.filter.filters import ReporterFilter, ArticleFilter from graphene.contrib.django.tests.filter.filters import ReporterFilter, ArticleFilter
else: else:
pytestmark = pytest.mark.skipif(True, reason='django_filters not installed') pytestmark = pytest.mark.skipif(True, reason='django_filters not installed')
from graphene.contrib.django.tests.models import Reporter, Article
from graphene.contrib.django.tests.test_resolvers import ReporterNode, ArticleNode
def test_filter_get_filterset_class_explicit(): def test_filter_get_filterset_class_explicit():
reporter = Reporter(id=1, first_name='Cookie Monster') reporter = Reporter(id=1, first_name='Cookie Monster')

View File

@ -3,9 +3,9 @@ import inspect
import six import six
from django.db import models from django.db import models
from graphene.contrib.django import settings
from ...core.classtypes.objecttype import ObjectType, ObjectTypeMeta from ...core.classtypes.objecttype import ObjectType, ObjectTypeMeta
from ...relay.types import Connection, Node, NodeMeta from ...relay.types import Connection, Node, NodeMeta
from .utils import DJANGO_FILTER_INSTALLED
from .converter import convert_django_field from .converter import convert_django_field
from .options import DjangoOptions from .options import DjangoOptions
from .utils import get_reverse_fields, maybe_queryset from .utils import get_reverse_fields, maybe_queryset
@ -104,7 +104,7 @@ class DjangoConnection(Connection):
django_node_meta_bases = (DjangoObjectTypeMeta, NodeMeta) django_node_meta_bases = (DjangoObjectTypeMeta, NodeMeta)
# Only include filter functionality if available # Only include filter functionality if available
if settings.GRAPHENE_ENABLE_FILTERING: if DJANGO_FILTER_INSTALLED:
django_node_meta_bases = (DjangoFilterObjectTypeMeta,) + django_node_meta_bases django_node_meta_bases = (DjangoFilterObjectTypeMeta,) + django_node_meta_bases

View File

@ -7,6 +7,12 @@ from graphene.utils import LazyList
from graphene import Argument, String from graphene import Argument, String
try:
import django_filters # noqa
DJANGO_FILTER_INSTALLED = True
except ImportError:
DJANGO_FILTER_INSTALLED = False
def get_type_for_model(schema, model): def get_type_for_model(schema, model):
schema = schema schema = schema