Skip to content

Code adapted to new resolver API #234

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 1, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions graphene_django/debug/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ def disable_instrumentation(self):

class DjangoDebugMiddleware(object):

def resolve(self, next, root, args, context, info):
def resolve(self, next, root, info, **args):
context = info.context
django_debug = getattr(context, 'django_debug', None)
if not django_debug:
if context is None:
Expand All @@ -52,6 +53,6 @@ def resolve(self, next, root, args, context, info):
))
if info.schema.get_type('DjangoDebug') == info.return_type:
return context.django_debug.get_debug_promise()
promise = next(root, args, context, info)
promise = next(root, info, **args)
context.django_debug.add_promise(promise)
return promise
8 changes: 4 additions & 4 deletions graphene_django/debug/tests/test_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class Query(graphene.ObjectType):
reporter = graphene.Field(ReporterType)
debug = graphene.Field(DjangoDebug, name='__debug')

def resolve_reporter(self, *args, **kwargs):
def resolve_reporter(self, info, **args):
return Reporter.objects.first()

query = '''
Expand Down Expand Up @@ -80,7 +80,7 @@ class Query(graphene.ObjectType):
all_reporters = graphene.List(ReporterType)
debug = graphene.Field(DjangoDebug, name='__debug')

def resolve_all_reporters(self, *args, **kwargs):
def resolve_all_reporters(self, info, **args):
return Reporter.objects.all()

query = '''
Expand Down Expand Up @@ -129,7 +129,7 @@ class Query(graphene.ObjectType):
all_reporters = DjangoConnectionField(ReporterType)
debug = graphene.Field(DjangoDebug, name='__debug')

def resolve_all_reporters(self, *args, **kwargs):
def resolve_all_reporters(self, info, **args):
return Reporter.objects.all()

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

def resolve_all_reporters(self, *args, **kwargs):
def resolve_all_reporters(self, info, **args):
return Reporter.objects.all()

query = '''
Expand Down
15 changes: 7 additions & 8 deletions graphene_django/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

from promise import Promise

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

@staticmethod
def list_resolver(resolver, root, args, context, info):
return maybe_queryset(resolver(root, args, context, info))
def list_resolver(resolver, root, info, **args):
return maybe_queryset(resolver(root, info, **args))

def get_resolver(self, parent_resolver):
return final_resolver(partial(self.list_resolver, parent_resolver))
return partial(self.list_resolver, parent_resolver)


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

@classmethod
def connection_resolver(cls, resolver, connection, default_manager, max_limit,
enforce_first_or_last, root, args, context, info):
enforce_first_or_last, root, info, **args):
first = args.get('first')
last = args.get('last')

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

iterable = resolver(root, args, context, info)
iterable = resolver(root, info, **args)
on_resolve = partial(cls.resolve_connection, connection, default_manager, args)

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

def get_resolver(self, parent_resolver):
return final_resolver(partial(
return partial(
self.connection_resolver,
parent_resolver,
self.type,
self.get_manager(),
self.max_limit,
self.enforce_first_or_last
))
)
12 changes: 5 additions & 7 deletions graphene_django/filter/fields.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from collections import OrderedDict
from functools import partial

from graphene import final_resolver
from graphene.types.argument import to_arguments
from ..fields import DjangoConnectionField
from .utils import get_filtering_args_from_filterset, get_filterset_class
Expand Down Expand Up @@ -69,7 +68,7 @@ def merge_querysets(default_queryset, queryset):
@classmethod
def connection_resolver(cls, resolver, connection, default_manager, max_limit,
enforce_first_or_last, filterset_class, filtering_args,
root, args, context, info):
root, info, **args):
filter_kwargs = {k: v for k, v in args.items() if k in filtering_args}
qs = filterset_class(
data=filter_kwargs,
Expand All @@ -83,13 +82,12 @@ def connection_resolver(cls, resolver, connection, default_manager, max_limit,
max_limit,
enforce_first_or_last,
root,
args,
context,
info
info,
**args
)

def get_resolver(self, parent_resolver):
return final_resolver(partial(
return partial(
self.connection_resolver,
parent_resolver,
self.type,
Expand All @@ -98,4 +96,4 @@ def get_resolver(self, parent_resolver):
self.enforce_first_or_last,
self.filterset_class,
self.filtering_args
))
)
4 changes: 2 additions & 2 deletions graphene_django/filter/tests/test_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -399,7 +399,7 @@ class Query(ObjectType):
filterset_class=ReporterFilter
)

def resolve_all_reporters(self, **args):
def resolve_all_reporters(self, info, **args):
return Reporter.objects.order_by('a_choice')

Reporter.objects.create(
Expand Down Expand Up @@ -499,7 +499,7 @@ class Query(ObjectType):
filterset_class=ReporterFilter
)

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

Reporter.objects.create(
Expand Down
10 changes: 4 additions & 6 deletions graphene_django/rest_framework/mutation.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from collections import OrderedDict

import graphene
from graphene import annotate, Context, ResolveInfo
from graphene.types import Field, InputField
from graphene.types.mutation import MutationOptions
from graphene.relay.mutation import ClientIDMutation
Expand Down Expand Up @@ -68,12 +67,11 @@ def __init_subclass_with_meta__(cls, serializer_class=None,
super(SerializerMutation, cls).__init_subclass_with_meta__(_meta=_meta, input_fields=input_fields, **options)

@classmethod
@annotate(context=Context, info=ResolveInfo)
def mutate_and_get_payload(cls, root, input, context, info):
serializer = cls._meta.serializer_class(data=dict(input))
def mutate_and_get_payload(cls, root, info, **input):
serializer = cls._meta.serializer_class(data=input)

if serializer.is_valid():
return cls.perform_mutate(serializer, context, info)
return cls.perform_mutate(serializer, info)
else:
errors = [
ErrorType(field=key, messages=value)
Expand All @@ -83,6 +81,6 @@ def mutate_and_get_payload(cls, root, input, context, info):
return cls(errors=errors)

@classmethod
def perform_mutate(cls, serializer, context, info):
def perform_mutate(cls, serializer, info):
obj = serializer.save()
return cls(**obj)
8 changes: 4 additions & 4 deletions graphene_django/tests/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class Meta:
model = Reporter
interfaces = (relay.Node, )

def get_node(self, id, context, info):
def get_node(self, info, id):
pass


Expand All @@ -22,17 +22,17 @@ class Meta:
model = Article
interfaces = (relay.Node, )

def resolve_raises(self):
def resolve_raises(self, info):
raise Exception("This field should raise exception")

def get_node(self, id):
def get_node(self, info, id):
pass


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

def resolve_human(self):
def resolve_human(self, info):
return Human()


Expand Down
13 changes: 6 additions & 7 deletions graphene_django/tests/schema_view.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import graphene
from graphene import ObjectType, Schema, annotate, Context
from graphene import ObjectType, Schema


class QueryRoot(ObjectType):
Expand All @@ -8,21 +8,20 @@ class QueryRoot(ObjectType):
request = graphene.String(required=True)
test = graphene.String(who=graphene.String())

def resolve_thrower(self):
def resolve_thrower(self, info):
raise Exception("Throws!")

@annotate(request=Context)
def resolve_request(self, request):
return request.GET.get('q')
def resolve_request(self, info):
return info.context.GET.get('q')

def resolve_test(self, who=None):
def resolve_test(self, info, who=None):
return 'Hello %s' % (who or 'World')


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

def resolve_write_test(self):
def resolve_write_test(self, info):
return QueryRoot()


Expand Down
24 changes: 12 additions & 12 deletions graphene_django/tests/test_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class Meta:
class Query(graphene.ObjectType):
reporter = graphene.Field(ReporterType)

def resolve_reporter(self):
def resolve_reporter(self, info):
return SimpleLazyObject(lambda: Reporter(id=1))

schema = graphene.Schema(query=Query)
Expand Down Expand Up @@ -75,7 +75,7 @@ class Meta:
class Query(graphene.ObjectType):
reporter = graphene.Field(ReporterType)

def resolve_reporter(self):
def resolve_reporter(self, info):
return Reporter(first_name='ABA', last_name='X')

query = '''
Expand Down Expand Up @@ -119,7 +119,7 @@ class Meta:
class Query(graphene.ObjectType):
event = graphene.Field(EventType)

def resolve_event(self):
def resolve_event(self, info):
return Event(
ages=(0, 10),
data={'angry_babies': True},
Expand Down Expand Up @@ -162,10 +162,10 @@ class Meta:
interfaces = (Node, )

@classmethod
def get_node(cls, id, context, info):
def get_node(cls, info, id):
return Reporter(id=2, first_name='Cookie Monster')

def resolve_articles(self, **args):
def resolve_articles(self, info, **args):
return [Article(headline='Hi!')]

class ArticleNode(DjangoObjectType):
Expand All @@ -175,15 +175,15 @@ class Meta:
interfaces = (Node, )

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

class Query(graphene.ObjectType):
node = Node.Field()
reporter = graphene.Field(ReporterNode)
article = graphene.Field(ArticleNode)

def resolve_reporter(self):
def resolve_reporter(self, info):
return Reporter(id=1, first_name='ABA', last_name='X')

query = '''
Expand Down Expand Up @@ -250,7 +250,7 @@ class Meta:
class Query(graphene.ObjectType):
all_reporters = DjangoConnectionField(ReporterType)

def resolve_all_reporters(self, **args):
def resolve_all_reporters(self, info, **args):
return [Reporter(id=1)]

schema = graphene.Schema(query=Query)
Expand Down Expand Up @@ -308,10 +308,10 @@ class Query(graphene.ObjectType):
all_reporters = DjangoConnectionField(ReporterType)
all_articles = DjangoConnectionField(ArticleType)

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

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

schema = graphene.Schema(query=Query)
Expand Down Expand Up @@ -618,7 +618,7 @@ class Meta:
class Query(graphene.ObjectType):
all_reporters = DjangoConnectionField(ReporterType)

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

schema = graphene.Schema(query=Query)
Expand Down Expand Up @@ -677,7 +677,7 @@ class Meta:

articles = DjangoConnectionField(ArticleType)

def resolve_articles(self, **args):
def resolve_articles(self, info, **args):
return article_loader.load(self.id)

class Query(graphene.ObjectType):
Expand Down
2 changes: 1 addition & 1 deletion graphene_django/tests/test_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def test_django_interface():

@patch('graphene_django.tests.models.Article.objects.get', return_value=Article(id=1))
def test_django_get_node(get):
article = Article.get_node(1, None, None)
article = Article.get_node(None, 1)
get.assert_called_with(pk=1)
assert article.id == 1

Expand Down
6 changes: 3 additions & 3 deletions graphene_django/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,11 +90,11 @@ def __init_subclass_with_meta__(cls, model=None, registry=None, skip_registry=Fa
if not skip_registry:
registry.register(cls)

def resolve_id(self):
def resolve_id(self, info):
return self.pk

@classmethod
def is_type_of(cls, root, context, info):
def is_type_of(cls, root, info):
if isinstance(root, SimpleLazyObject):
root._setup()
root = root._wrapped
Expand All @@ -108,7 +108,7 @@ def is_type_of(cls, root, context, info):
return model == cls._meta.model

@classmethod
def get_node(cls, id, context, info):
def get_node(cls, info, id):
try:
return cls._meta.model.objects.get(pk=id)
except cls._meta.model.DoesNotExist:
Expand Down