9
9
from graphql_relay .connection .arrayconnection import connection_from_list_slice
10
10
11
11
from .settings import graphene_settings
12
- from .utils import DJANGO_FILTER_INSTALLED , maybe_queryset
12
+ from .utils import maybe_queryset
13
13
14
14
15
15
class DjangoListField (Field ):
@@ -22,8 +22,8 @@ def model(self):
22
22
return self .type .of_type ._meta .node ._meta .model
23
23
24
24
@staticmethod
25
- def list_resolver (resolver , root , args , context , info ):
26
- return maybe_queryset (resolver (root , args , context , info ))
25
+ def list_resolver (resolver , root , info , ** args ):
26
+ return maybe_queryset (resolver (root , info , ** args ))
27
27
28
28
def get_resolver (self , parent_resolver ):
29
29
return partial (self .list_resolver , parent_resolver )
@@ -43,6 +43,14 @@ def __init__(self, *args, **kwargs):
43
43
)
44
44
super (DjangoConnectionField , self ).__init__ (* args , ** kwargs )
45
45
46
+ @property
47
+ def type (self ):
48
+ from .types import DjangoObjectType
49
+ _type = super (ConnectionField , self ).type
50
+ assert issubclass (_type , DjangoObjectType ), "DjangoConnectionField only accepts DjangoObjectType types"
51
+ assert _type ._meta .connection , "The type {} doesn't have a connection" .format (_type .__name__ )
52
+ return _type ._meta .connection
53
+
46
54
@property
47
55
def node_type (self ):
48
56
return self .type ._meta .node
@@ -89,7 +97,7 @@ def resolve_connection(cls, connection, default_manager, args, iterable):
89
97
90
98
@classmethod
91
99
def connection_resolver (cls , resolver , connection , default_manager , max_limit ,
92
- enforce_first_or_last , root , args , context , info ):
100
+ enforce_first_or_last , root , info , ** args ):
93
101
first = args .get ('first' )
94
102
last = args .get ('last' )
95
103
@@ -111,7 +119,7 @@ def connection_resolver(cls, resolver, connection, default_manager, max_limit,
111
119
).format (first , info .field_name , max_limit )
112
120
args ['last' ] = min (last , max_limit )
113
121
114
- iterable = resolver (root , args , context , info )
122
+ iterable = resolver (root , info , ** args )
115
123
on_resolve = partial (cls .resolve_connection , connection , default_manager , args )
116
124
117
125
if Promise .is_thenable (iterable ):
@@ -128,10 +136,3 @@ def get_resolver(self, parent_resolver):
128
136
self .max_limit ,
129
137
self .enforce_first_or_last
130
138
)
131
-
132
-
133
- def get_connection_field (* args , ** kwargs ):
134
- if DJANGO_FILTER_INSTALLED :
135
- from .filter .fields import DjangoFilterConnectionField
136
- return DjangoFilterConnectionField (* args , ** kwargs )
137
- return DjangoConnectionField (* args , ** kwargs )
0 commit comments