Skip to content

Commit fda876f

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

File tree

2 files changed

+10
-25
lines changed

2 files changed

+10
-25
lines changed

graphene_django/fields.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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 & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
from collections import OrderedDict
22
from functools import partial
33

4-
from django.db.models.query import QuerySet
5-
64
# from graphene.relay import is_node
75
from graphene.types.argument import to_arguments
86
from ..fields import DjangoConnectionField
@@ -46,30 +44,15 @@ def filterset_class(self):
4644
def filtering_args(self):
4745
return get_filtering_args_from_filterset(self.filterset_class, self.node_type)
4846

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-
5947
@staticmethod
6048
def connection_resolver(resolver, connection, default_manager, filterset_class, filtering_args,
6149
root, args, context, info):
6250
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)
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)
7356

7457
def get_resolver(self, parent_resolver):
7558
return partial(self.connection_resolver, parent_resolver, self.type, self.get_manager(),

0 commit comments

Comments
 (0)