Skip to content

Commit 7768d14

Browse files
authored
Merge pull request #234 from graphql-python/2.0-newresolvers
Code adapted to new resolver API
2 parents 6411879 + 3d58148 commit 7768d14

File tree

11 files changed

+51
-56
lines changed

11 files changed

+51
-56
lines changed

graphene_django/debug/middleware.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ def disable_instrumentation(self):
3939

4040
class DjangoDebugMiddleware(object):
4141

42-
def resolve(self, next, root, args, context, info):
42+
def resolve(self, next, root, info, **args):
43+
context = info.context
4344
django_debug = getattr(context, 'django_debug', None)
4445
if not django_debug:
4546
if context is None:
@@ -52,6 +53,6 @@ def resolve(self, next, root, args, context, info):
5253
))
5354
if info.schema.get_type('DjangoDebug') == info.return_type:
5455
return context.django_debug.get_debug_promise()
55-
promise = next(root, args, context, info)
56+
promise = next(root, info, **args)
5657
context.django_debug.add_promise(promise)
5758
return promise

graphene_django/debug/tests/test_query.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class Query(graphene.ObjectType):
3333
reporter = graphene.Field(ReporterType)
3434
debug = graphene.Field(DjangoDebug, name='__debug')
3535

36-
def resolve_reporter(self, *args, **kwargs):
36+
def resolve_reporter(self, info, **args):
3737
return Reporter.objects.first()
3838

3939
query = '''
@@ -80,7 +80,7 @@ class Query(graphene.ObjectType):
8080
all_reporters = graphene.List(ReporterType)
8181
debug = graphene.Field(DjangoDebug, name='__debug')
8282

83-
def resolve_all_reporters(self, *args, **kwargs):
83+
def resolve_all_reporters(self, info, **args):
8484
return Reporter.objects.all()
8585

8686
query = '''
@@ -129,7 +129,7 @@ class Query(graphene.ObjectType):
129129
all_reporters = DjangoConnectionField(ReporterType)
130130
debug = graphene.Field(DjangoDebug, name='__debug')
131131

132-
def resolve_all_reporters(self, *args, **kwargs):
132+
def resolve_all_reporters(self, info, **args):
133133
return Reporter.objects.all()
134134

135135
query = '''
@@ -185,7 +185,7 @@ class Query(graphene.ObjectType):
185185
s = graphene.String(resolver=lambda *_: "S")
186186
debug = graphene.Field(DjangoDebug, name='__debug')
187187

188-
def resolve_all_reporters(self, *args, **kwargs):
188+
def resolve_all_reporters(self, info, **args):
189189
return Reporter.objects.all()
190190

191191
query = '''

graphene_django/fields.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
from promise import Promise
66

7-
from graphene import final_resolver
87
from graphene.types import Field, List
98
from graphene.relay import ConnectionField, PageInfo
109
from graphql_relay.connection.arrayconnection import connection_from_list_slice
@@ -23,11 +22,11 @@ def model(self):
2322
return self.type.of_type._meta.node._meta.model
2423

2524
@staticmethod
26-
def list_resolver(resolver, root, args, context, info):
27-
return maybe_queryset(resolver(root, args, context, info))
25+
def list_resolver(resolver, root, info, **args):
26+
return maybe_queryset(resolver(root, info, **args))
2827

2928
def get_resolver(self, parent_resolver):
30-
return final_resolver(partial(self.list_resolver, parent_resolver))
29+
return partial(self.list_resolver, parent_resolver)
3130

3231

3332
class DjangoConnectionField(ConnectionField):
@@ -98,7 +97,7 @@ def resolve_connection(cls, connection, default_manager, args, iterable):
9897

9998
@classmethod
10099
def connection_resolver(cls, resolver, connection, default_manager, max_limit,
101-
enforce_first_or_last, root, args, context, info):
100+
enforce_first_or_last, root, info, **args):
102101
first = args.get('first')
103102
last = args.get('last')
104103

@@ -120,7 +119,7 @@ def connection_resolver(cls, resolver, connection, default_manager, max_limit,
120119
).format(first, info.field_name, max_limit)
121120
args['last'] = min(last, max_limit)
122121

123-
iterable = resolver(root, args, context, info)
122+
iterable = resolver(root, info, **args)
124123
on_resolve = partial(cls.resolve_connection, connection, default_manager, args)
125124

126125
if Promise.is_thenable(iterable):
@@ -129,11 +128,11 @@ def connection_resolver(cls, resolver, connection, default_manager, max_limit,
129128
return on_resolve(iterable)
130129

131130
def get_resolver(self, parent_resolver):
132-
return final_resolver(partial(
131+
return partial(
133132
self.connection_resolver,
134133
parent_resolver,
135134
self.type,
136135
self.get_manager(),
137136
self.max_limit,
138137
self.enforce_first_or_last
139-
))
138+
)

graphene_django/filter/fields.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from collections import OrderedDict
22
from functools import partial
33

4-
from graphene import final_resolver
54
from graphene.types.argument import to_arguments
65
from ..fields import DjangoConnectionField
76
from .utils import get_filtering_args_from_filterset, get_filterset_class
@@ -69,7 +68,7 @@ def merge_querysets(default_queryset, queryset):
6968
@classmethod
7069
def connection_resolver(cls, resolver, connection, default_manager, max_limit,
7170
enforce_first_or_last, filterset_class, filtering_args,
72-
root, args, context, info):
71+
root, info, **args):
7372
filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}
7473
qs = filterset_class(
7574
data=filter_kwargs,
@@ -83,13 +82,12 @@ def connection_resolver(cls, resolver, connection, default_manager, max_limit,
8382
max_limit,
8483
enforce_first_or_last,
8584
root,
86-
args,
87-
context,
88-
info
85+
info,
86+
**args
8987
)
9088

9189
def get_resolver(self, parent_resolver):
92-
return final_resolver(partial(
90+
return partial(
9391
self.connection_resolver,
9492
parent_resolver,
9593
self.type,
@@ -98,4 +96,4 @@ def get_resolver(self, parent_resolver):
9896
self.enforce_first_or_last,
9997
self.filterset_class,
10098
self.filtering_args
101-
))
99+
)

graphene_django/filter/tests/test_fields.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ class Query(ObjectType):
399399
filterset_class=ReporterFilter
400400
)
401401

402-
def resolve_all_reporters(self, **args):
402+
def resolve_all_reporters(self, info, **args):
403403
return Reporter.objects.order_by('a_choice')
404404

405405
Reporter.objects.create(
@@ -499,7 +499,7 @@ class Query(ObjectType):
499499
filterset_class=ReporterFilter
500500
)
501501

502-
def resolve_all_reporters(self, **args):
502+
def resolve_all_reporters(self, info, **args):
503503
return Reporter.objects.order_by('a_choice')[:2]
504504

505505
Reporter.objects.create(

graphene_django/rest_framework/mutation.py

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from collections import OrderedDict
22

33
import graphene
4-
from graphene import annotate, Context, ResolveInfo
54
from graphene.types import Field, InputField
65
from graphene.types.mutation import MutationOptions
76
from graphene.relay.mutation import ClientIDMutation
@@ -68,12 +67,11 @@ def __init_subclass_with_meta__(cls, serializer_class=None,
6867
super(SerializerMutation, cls).__init_subclass_with_meta__(_meta=_meta, input_fields=input_fields, **options)
6968

7069
@classmethod
71-
@annotate(context=Context, info=ResolveInfo)
72-
def mutate_and_get_payload(cls, root, input, context, info):
73-
serializer = cls._meta.serializer_class(data=dict(input))
70+
def mutate_and_get_payload(cls, root, info, **input):
71+
serializer = cls._meta.serializer_class(data=input)
7472

7573
if serializer.is_valid():
76-
return cls.perform_mutate(serializer, context, info)
74+
return cls.perform_mutate(serializer, info)
7775
else:
7876
errors = [
7977
ErrorType(field=key, messages=value)
@@ -83,6 +81,6 @@ def mutate_and_get_payload(cls, root, input, context, info):
8381
return cls(errors=errors)
8482

8583
@classmethod
86-
def perform_mutate(cls, serializer, context, info):
84+
def perform_mutate(cls, serializer, info):
8785
obj = serializer.save()
8886
return cls(**obj)

graphene_django/tests/schema.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Meta:
1111
model = Reporter
1212
interfaces = (relay.Node, )
1313

14-
def get_node(self, id, context, info):
14+
def get_node(self, info, id):
1515
pass
1616

1717

@@ -22,17 +22,17 @@ class Meta:
2222
model = Article
2323
interfaces = (relay.Node, )
2424

25-
def resolve_raises(self):
25+
def resolve_raises(self, info):
2626
raise Exception("This field should raise exception")
2727

28-
def get_node(self, id):
28+
def get_node(self, info, id):
2929
pass
3030

3131

3232
class Query(graphene.ObjectType):
3333
human = graphene.Field(Human)
3434

35-
def resolve_human(self):
35+
def resolve_human(self, info):
3636
return Human()
3737

3838

graphene_django/tests/schema_view.py

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import graphene
2-
from graphene import ObjectType, Schema, annotate, Context
2+
from graphene import ObjectType, Schema
33

44

55
class QueryRoot(ObjectType):
@@ -8,21 +8,20 @@ class QueryRoot(ObjectType):
88
request = graphene.String(required=True)
99
test = graphene.String(who=graphene.String())
1010

11-
def resolve_thrower(self):
11+
def resolve_thrower(self, info):
1212
raise Exception("Throws!")
1313

14-
@annotate(request=Context)
15-
def resolve_request(self, request):
16-
return request.GET.get('q')
14+
def resolve_request(self, info):
15+
return info.context.GET.get('q')
1716

18-
def resolve_test(self, who=None):
17+
def resolve_test(self, info, who=None):
1918
return 'Hello %s' % (who or 'World')
2019

2120

2221
class MutationRoot(ObjectType):
2322
write_test = graphene.Field(QueryRoot)
2423

25-
def resolve_write_test(self):
24+
def resolve_write_test(self, info):
2625
return QueryRoot()
2726

2827

graphene_django/tests/test_query.py

+12-12
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class Meta:
4646
class Query(graphene.ObjectType):
4747
reporter = graphene.Field(ReporterType)
4848

49-
def resolve_reporter(self):
49+
def resolve_reporter(self, info):
5050
return SimpleLazyObject(lambda: Reporter(id=1))
5151

5252
schema = graphene.Schema(query=Query)
@@ -75,7 +75,7 @@ class Meta:
7575
class Query(graphene.ObjectType):
7676
reporter = graphene.Field(ReporterType)
7777

78-
def resolve_reporter(self):
78+
def resolve_reporter(self, info):
7979
return Reporter(first_name='ABA', last_name='X')
8080

8181
query = '''
@@ -119,7 +119,7 @@ class Meta:
119119
class Query(graphene.ObjectType):
120120
event = graphene.Field(EventType)
121121

122-
def resolve_event(self):
122+
def resolve_event(self, info):
123123
return Event(
124124
ages=(0, 10),
125125
data={'angry_babies': True},
@@ -162,10 +162,10 @@ class Meta:
162162
interfaces = (Node, )
163163

164164
@classmethod
165-
def get_node(cls, id, context, info):
165+
def get_node(cls, info, id):
166166
return Reporter(id=2, first_name='Cookie Monster')
167167

168-
def resolve_articles(self, **args):
168+
def resolve_articles(self, info, **args):
169169
return [Article(headline='Hi!')]
170170

171171
class ArticleNode(DjangoObjectType):
@@ -175,15 +175,15 @@ class Meta:
175175
interfaces = (Node, )
176176

177177
@classmethod
178-
def get_node(cls, id, context, info):
178+
def get_node(cls, info, id):
179179
return Article(id=1, headline='Article node', pub_date=datetime.date(2002, 3, 11))
180180

181181
class Query(graphene.ObjectType):
182182
node = Node.Field()
183183
reporter = graphene.Field(ReporterNode)
184184
article = graphene.Field(ArticleNode)
185185

186-
def resolve_reporter(self):
186+
def resolve_reporter(self, info):
187187
return Reporter(id=1, first_name='ABA', last_name='X')
188188

189189
query = '''
@@ -250,7 +250,7 @@ class Meta:
250250
class Query(graphene.ObjectType):
251251
all_reporters = DjangoConnectionField(ReporterType)
252252

253-
def resolve_all_reporters(self, **args):
253+
def resolve_all_reporters(self, info, **args):
254254
return [Reporter(id=1)]
255255

256256
schema = graphene.Schema(query=Query)
@@ -308,10 +308,10 @@ class Query(graphene.ObjectType):
308308
all_reporters = DjangoConnectionField(ReporterType)
309309
all_articles = DjangoConnectionField(ArticleType)
310310

311-
def resolve_all_reporters(self, **args):
311+
def resolve_all_reporters(self, info, **args):
312312
return Reporter.objects.annotate(articles_c=Count('articles')).order_by('articles_c')
313313

314-
def resolve_all_articles(self, **args):
314+
def resolve_all_articles(self, info, **args):
315315
return Article.objects.annotate(import_avg=Avg('importance')).order_by('import_avg')
316316

317317
schema = graphene.Schema(query=Query)
@@ -618,7 +618,7 @@ class Meta:
618618
class Query(graphene.ObjectType):
619619
all_reporters = DjangoConnectionField(ReporterType)
620620

621-
def resolve_all_reporters(self, **args):
621+
def resolve_all_reporters(self, info, **args):
622622
return Promise.resolve([Reporter(id=1)])
623623

624624
schema = graphene.Schema(query=Query)
@@ -677,7 +677,7 @@ class Meta:
677677

678678
articles = DjangoConnectionField(ArticleType)
679679

680-
def resolve_articles(self, **args):
680+
def resolve_articles(self, info, **args):
681681
return article_loader.load(self.id)
682682

683683
class Query(graphene.ObjectType):

graphene_django/tests/test_types.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def test_django_interface():
3838

3939
@patch('graphene_django.tests.models.Article.objects.get', return_value=Article(id=1))
4040
def test_django_get_node(get):
41-
article = Article.get_node(1, None, None)
41+
article = Article.get_node(None, 1)
4242
get.assert_called_with(pk=1)
4343
assert article.id == 1
4444

graphene_django/types.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,11 @@ def __init_subclass_with_meta__(cls, model=None, registry=None, skip_registry=Fa
9090
if not skip_registry:
9191
registry.register(cls)
9292

93-
def resolve_id(self):
93+
def resolve_id(self, info):
9494
return self.pk
9595

9696
@classmethod
97-
def is_type_of(cls, root, context, info):
97+
def is_type_of(cls, root, info):
9898
if isinstance(root, SimpleLazyObject):
9999
root._setup()
100100
root = root._wrapped
@@ -108,7 +108,7 @@ def is_type_of(cls, root, context, info):
108108
return model == cls._meta.model
109109

110110
@classmethod
111-
def get_node(cls, id, context, info):
111+
def get_node(cls, info, id):
112112
try:
113113
return cls._meta.model.objects.get(pk=id)
114114
except cls._meta.model.DoesNotExist:

0 commit comments

Comments
 (0)