Skip to content

Commit ccd855a

Browse files
author
Niall
committed
Long-winded intersection using sets
1 parent e2284fe commit ccd855a

File tree

2 files changed

+11
-24
lines changed

2 files changed

+11
-24
lines changed

graphene_django/fields.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from graphene.types import Field, List
66
from graphene.relay import ConnectionField, PageInfo
7-
from graphql_relay.connection.arrayconnection import connection_from_list_slice
7+
from graphql_relay.connection.arrayconnection import connection_from_list_slice, connection_from_list
88

99
from .utils import DJANGO_FILTER_INSTALLED, maybe_queryset
1010

@@ -53,9 +53,11 @@ 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 default_manager is not None and iterable is not default_manager:
57-
iterable &= maybe_queryset(default_manager)
58-
_len = iterable.count()
56+
if iterable is not default_manager:
57+
iterable = list(set(iterable).intersection(maybe_queryset(default_manager)))
58+
_len = len(iterable)
59+
else:
60+
_len = iterable.count()
5961
else:
6062
_len = len(iterable)
6163
connection = connection_from_list_slice(

graphene_django/filter/fields.py

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -46,30 +46,15 @@ def filterset_class(self):
4646
def filtering_args(self):
4747
return get_filtering_args_from_filterset(self.filterset_class, self.node_type)
4848

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-
5949
@staticmethod
6050
def connection_resolver(resolver, connection, default_manager, filterset_class, filtering_args,
6151
root, args, context, info):
6252
filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}
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)
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)
7358

7459
def get_resolver(self, parent_resolver):
7560
return partial(self.connection_resolver, parent_resolver, self.type, self.get_manager(),

0 commit comments

Comments
 (0)