From a78d2fe0add6987d375a960bf99626757876e6cc Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Fri, 5 Jan 2018 17:44:12 +0000 Subject: [PATCH 1/4] Add dict_or_attr resolver and set it as default --- graphene/types/resolver.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/graphene/types/resolver.py b/graphene/types/resolver.py index 888aba8ad..6b2093e2d 100644 --- a/graphene/types/resolver.py +++ b/graphene/types/resolver.py @@ -6,7 +6,13 @@ def dict_resolver(attname, default_value, root, info, **args): return root.get(attname, default_value) -default_resolver = attr_resolver +def dict_or_attr_resolver(attname, default_value, root, info, **args): + if isinstance(root, dict): + return dict_resolver(attname, default_value, root, info, **args) + return attr_resolver(attname, default_value, root, info, **args) + + +default_resolver = dict_or_attr_resolver def set_default_resolver(resolver): From 17c225fda23fdd554911c692e41bc7ea087df0e5 Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Fri, 5 Jan 2018 17:44:26 +0000 Subject: [PATCH 2/4] Add some tests --- graphene/types/tests/test_resolver.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/graphene/types/tests/test_resolver.py b/graphene/types/tests/test_resolver.py index 3be9a4921..7ba530ae8 100644 --- a/graphene/types/tests/test_resolver.py +++ b/graphene/types/tests/test_resolver.py @@ -2,6 +2,7 @@ from ..resolver import ( attr_resolver, dict_resolver, + dict_or_attr_resolver, get_default_resolver, set_default_resolver, ) @@ -37,8 +38,16 @@ def test_dict_resolver_default_value(): assert resolved == "default" +def test_dict_or_attr_resolver(): + resolved = dict_or_attr_resolver('attr', None, demo_dict, info, **args) + assert resolved == 'value' + + resolved = dict_or_attr_resolver('attr', None, demo_obj, info, **args) + assert resolved == 'value' + + def test_get_default_resolver_is_attr_resolver(): - assert get_default_resolver() == attr_resolver + assert get_default_resolver() == dict_or_attr_resolver def test_set_default_resolver_workd(): From b765cc02afb0d05f5635bc10077547394f339799 Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Fri, 5 Jan 2018 17:46:45 +0000 Subject: [PATCH 3/4] Dry up code --- graphene/types/resolver.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/graphene/types/resolver.py b/graphene/types/resolver.py index 6b2093e2d..6a8ea02ba 100644 --- a/graphene/types/resolver.py +++ b/graphene/types/resolver.py @@ -7,9 +7,10 @@ def dict_resolver(attname, default_value, root, info, **args): def dict_or_attr_resolver(attname, default_value, root, info, **args): + resolver = attr_resolver if isinstance(root, dict): - return dict_resolver(attname, default_value, root, info, **args) - return attr_resolver(attname, default_value, root, info, **args) + resolver = dict_resolver + return resolver(attname, default_value, root, info, **args) default_resolver = dict_or_attr_resolver From f69d22190ea891040f88e0124a38367e776c4cea Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Sat, 25 Aug 2018 11:28:01 +0100 Subject: [PATCH 4/4] Updated formatting --- graphene/types/tests/test_resolver.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/graphene/types/tests/test_resolver.py b/graphene/types/tests/test_resolver.py index 7ba530ae8..3cc445398 100644 --- a/graphene/types/tests/test_resolver.py +++ b/graphene/types/tests/test_resolver.py @@ -39,11 +39,11 @@ def test_dict_resolver_default_value(): def test_dict_or_attr_resolver(): - resolved = dict_or_attr_resolver('attr', None, demo_dict, info, **args) - assert resolved == 'value' + resolved = dict_or_attr_resolver("attr", None, demo_dict, info, **args) + assert resolved == "value" - resolved = dict_or_attr_resolver('attr', None, demo_obj, info, **args) - assert resolved == 'value' + resolved = dict_or_attr_resolver("attr", None, demo_obj, info, **args) + assert resolved == "value" def test_get_default_resolver_is_attr_resolver():