Skip to content

Commit 69457cf

Browse files
author
Niall
committed
Attempt fix. Breaks tests
1 parent 67804fd commit 69457cf

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

graphene_django/fields.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ def connection_resolver(resolver, connection, default_manager, root, args, conte
5353
iterable = default_manager
5454
iterable = maybe_queryset(iterable)
5555
if isinstance(iterable, QuerySet):
56-
if iterable is not default_manager:
57-
iterable = maybe_queryset(default_manager)
56+
if default_manager is not None and iterable is not default_manager:
57+
iterable &= maybe_queryset(default_manager)
5858
_len = iterable.count()
5959
else:
6060
_len = len(iterable)

graphene_django/filter/fields.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from collections import OrderedDict
22
from functools import partial
33

4+
from django.db.models.query import QuerySet
5+
46
# from graphene.relay import is_node
57
from graphene.types.argument import to_arguments
68
from ..fields import DjangoConnectionField
@@ -44,15 +46,30 @@ def filterset_class(self):
4446
def filtering_args(self):
4547
return get_filtering_args_from_filterset(self.filterset_class, self.node_type)
4648

49+
# @staticmethod
50+
# def connection_resolver(resolver, connection, default_manager, filterset_class, filtering_args,
51+
# root, args, context, info):
52+
# filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}
53+
# qs = filterset_class(
54+
# data=filter_kwargs,
55+
# queryset=default_manager.get_queryset()
56+
# ).qs
57+
# return DjangoConnectionField.connection_resolver(resolver, connection, qs, root, args, context, info)
58+
4759
@staticmethod
4860
def connection_resolver(resolver, connection, default_manager, filterset_class, filtering_args,
4961
root, args, context, info):
5062
filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}
51-
qs = filterset_class(
52-
data=filter_kwargs,
53-
queryset=default_manager.get_queryset()
54-
).qs
55-
return DjangoConnectionField.connection_resolver(resolver, connection, qs, root, args, context, info)
63+
64+
def new_resolver(root, args, context, info):
65+
qs = resolver(root, args, context, info)
66+
if qs is None or not isinstance(qs, QuerySet):
67+
qs = default_manager.get_queryset()
68+
qs = filterset_class(data=filter_kwargs, queryset=qs).qs
69+
70+
return qs
71+
72+
return DjangoConnectionField.connection_resolver(new_resolver, connection, None, root, args, context, info)
5673

5774
def get_resolver(self, parent_resolver):
5875
return partial(self.connection_resolver, parent_resolver, self.type, self.get_manager(),

graphene_django/tests/test_query.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ class ArticleType(DjangoObjectType):
382382
class Meta:
383383
model = Article
384384
interfaces = (Node, )
385-
filter_fields = ('lang', 'tag')
385+
filter_fields = ('lang', 'headline')
386386

387387
class Query(graphene.ObjectType):
388388
all_reporters = DjangoConnectionField(ReporterType)
@@ -398,24 +398,21 @@ class Query(graphene.ObjectType):
398398
pub_date=datetime.date.today(),
399399
reporter=r,
400400
editor=r,
401-
lang='es',
402-
tag='one'
401+
lang='es'
403402
)
404403
Article.objects.create(
405404
headline='Article Node 2',
406405
pub_date=datetime.date.today(),
407406
reporter=r,
408407
editor=r,
409-
lang='en',
410-
tag='two'
408+
lang='en'
411409
)
412410
Article.objects.create(
413411
headline='Article Node 3',
414412
pub_date=datetime.date.today(),
415413
reporter=r,
416414
editor=r,
417-
lang='en',
418-
tag='three'
415+
lang='en'
419416
)
420417

421418
schema = graphene.Schema(query=Query)
@@ -425,7 +422,7 @@ class Query(graphene.ObjectType):
425422
edges {
426423
node {
427424
id
428-
articles(lang: "es", tag: "two") {
425+
articles(lang: "es", headline: "Article Node 2") {
429426
edges {
430427
node {
431428
id

0 commit comments

Comments
 (0)