From 57e3e86eb1223b955c7ad1ca3d562118e169937f Mon Sep 17 00:00:00 2001 From: Mardanov Timur Rustemovich Date: Thu, 29 Nov 2018 17:32:55 +0300 Subject: [PATCH] fixed parent system --- graphene_django/fields.py | 8 ++------ graphene_django/filter/fields.py | 8 +++----- graphene_django/utils.py | 8 ++++++++ 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/graphene_django/fields.py b/graphene_django/fields.py index 52aac01..172fa84 100644 --- a/graphene_django/fields.py +++ b/graphene_django/fields.py @@ -10,7 +10,7 @@ from graphene.relay import ConnectionField, PageInfo from graphql_relay.connection.arrayconnection import connection_from_list_slice from .settings import graphene_settings -from .utils import maybe_queryset +from .utils import maybe_queryset, is_parent_set class DjangoListField(Field): @@ -152,11 +152,7 @@ class DjangoConnectionField(ConnectionField): _parent = args.get('know_parent', False) if not _parent: - if hasattr(info.parent_type._meta, 'know_parent_fields'): - options = info.parent_type._meta.know_parent_fields - assert isinstance(options, (list, tuple)), \ - "know_parent_fields should be list or tuple" - _parent = info.field_name in options + _parent = is_parent_set(info) def new_resolver(root, info, **kwargs): qs = resolver(root, info, **kwargs) diff --git a/graphene_django/filter/fields.py b/graphene_django/filter/fields.py index 7034c7f..ca48eaa 100644 --- a/graphene_django/filter/fields.py +++ b/graphene_django/filter/fields.py @@ -6,6 +6,8 @@ from ..fields import DjangoConnectionField from .utils import get_filterset_class, get_filtering_args_from_filterset, \ make_qs +from ..utils import is_parent_set + class DjangoFilterConnectionField(DjangoConnectionField): def __init__( @@ -109,11 +111,7 @@ class DjangoFilterConnectionField(DjangoConnectionField): _parent = args.get('know_parent', False) if not _parent: - if hasattr(info.parent_type._meta, 'know_parent_fields'): - options = info.parent_type._meta.know_parent_fields - assert isinstance(options, (list, tuple)), \ - "know_parent_fields should be list or tuple" - _parent = info.field_name in options + _parent = is_parent_set(info) def new_resolver(root, info, **args): filters = dict(filter(lambda x: '__' in x[0], args.items())) diff --git a/graphene_django/utils.py b/graphene_django/utils.py index fce3526..830af03 100644 --- a/graphene_django/utils.py +++ b/graphene_django/utils.py @@ -8,6 +8,14 @@ from neomodel import ( # from graphene.utils import LazyList +def is_parent_set(info): + if hasattr(info.parent_type._meta.graphene_type, 'know_parent_fields'): + options = info.parent_type.graphene_type._meta.know_parent_fields + assert isinstance(options, (list, tuple)), \ + "know_parent_fields should be list or tuple" + return info.field_name in options + return False + class LazyList(object): pass