From c6f530baaa46af24114375459ed7e8a454c8d711 Mon Sep 17 00:00:00 2001 From: Thiago Bellini Ribeiro Date: Mon, 2 Sep 2019 14:47:44 -0300 Subject: [PATCH 1/2] Initial fix to consider 'only' optimization for relay --- graphene_django_optimizer/query.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/graphene_django_optimizer/query.py b/graphene_django_optimizer/query.py index e1a9f56..222397c 100644 --- a/graphene_django_optimizer/query.py +++ b/graphene_django_optimizer/query.py @@ -5,6 +5,7 @@ from django.db.models import ForeignKey, Prefetch from django.db.models.constants import LOOKUP_SEP from graphene import InputObjectType +from graphene.relay.node import GlobalID from graphene.types.generic import GenericScalar from graphene.types.resolver import default_resolver from graphene_django import DjangoObjectType @@ -281,7 +282,12 @@ def _is_resolver_for_id_field(self, resolver): # For python 2 unbound method: if hasattr(resolve_id, 'im_func'): resolve_id = resolve_id.im_func - return resolver == resolve_id + + if (isinstance(resolver, functools.partial) and + resolver.func == GlobalID.id_resolver): + return resolver.args[0] == resolve_id + else: + return resolver == resolve_id def _get_model_field_from_name(self, model, name): try: From 3cd05a5d405d93f639453def1d644967991228b1 Mon Sep 17 00:00:00 2001 From: Thiago Bellini Ribeiro Date: Mon, 2 Sep 2019 14:57:46 -0300 Subject: [PATCH 2/2] Fix flake8 issue --- graphene_django_optimizer/query.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphene_django_optimizer/query.py b/graphene_django_optimizer/query.py index 222397c..450d005 100644 --- a/graphene_django_optimizer/query.py +++ b/graphene_django_optimizer/query.py @@ -283,8 +283,8 @@ def _is_resolver_for_id_field(self, resolver): if hasattr(resolve_id, 'im_func'): resolve_id = resolve_id.im_func - if (isinstance(resolver, functools.partial) and - resolver.func == GlobalID.id_resolver): + if (isinstance(resolver, functools.partial) + and resolver.func == GlobalID.id_resolver): return resolver.args[0] == resolve_id else: return resolver == resolve_id