99from graphql_relay .connection .arrayconnection import connection_from_list_slice
1010
1111from .settings import graphene_settings
12- from .utils import DJANGO_FILTER_INSTALLED , maybe_queryset
12+ from .utils import maybe_queryset
1313
1414
1515class DjangoListField (Field ):
@@ -22,8 +22,8 @@ def model(self):
2222 return self .type .of_type ._meta .node ._meta .model
2323
2424 @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 ))
2727
2828 def get_resolver (self , parent_resolver ):
2929 return partial (self .list_resolver , parent_resolver )
@@ -43,6 +43,14 @@ def __init__(self, *args, **kwargs):
4343 )
4444 super (DjangoConnectionField , self ).__init__ (* args , ** kwargs )
4545
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+
4654 @property
4755 def node_type (self ):
4856 return self .type ._meta .node
@@ -89,7 +97,7 @@ def resolve_connection(cls, connection, default_manager, args, iterable):
8997
9098 @classmethod
9199 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 ):
93101 first = args .get ('first' )
94102 last = args .get ('last' )
95103
@@ -111,7 +119,7 @@ def connection_resolver(cls, resolver, connection, default_manager, max_limit,
111119 ).format (first , info .field_name , max_limit )
112120 args ['last' ] = min (last , max_limit )
113121
114- iterable = resolver (root , args , context , info )
122+ iterable = resolver (root , info , ** args )
115123 on_resolve = partial (cls .resolve_connection , connection , default_manager , args )
116124
117125 if Promise .is_thenable (iterable ):
@@ -128,10 +136,3 @@ def get_resolver(self, parent_resolver):
128136 self .max_limit ,
129137 self .enforce_first_or_last
130138 )
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