From 80fb69a9aea05031254c3017588afd89c4540679 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Wed, 24 Aug 2016 01:15:59 -0700 Subject: [PATCH] Stop requiring get_node in implemented Nodes --- graphene/relay/node.py | 9 +++------ graphene/relay/tests/test_connection.py | 4 ---- graphene/relay/tests/test_connection_query.py | 4 +--- graphene/relay/tests/test_node.py | 20 ------------------- 4 files changed, 4 insertions(+), 33 deletions(-) diff --git a/graphene/relay/node.py b/graphene/relay/node.py index 84011230..f73f6a53 100644 --- a/graphene/relay/node.py +++ b/graphene/relay/node.py @@ -89,7 +89,9 @@ class Node(six.with_metaclass(NodeMeta, Interface)): assert cls in graphene_type._meta.interfaces except: return None - return graphene_type.get_node(_id, context, info) + get_node = getattr(graphene_type, 'get_node', None) + if get_node: + return get_node(_id, context, info) @classmethod def from_global_id(cls, global_id): @@ -101,13 +103,8 @@ class Node(six.with_metaclass(NodeMeta, Interface)): @classmethod def implements(cls, objecttype): - require_get_node = cls.get_node_from_global_id == Node.get_node_from_global_id get_connection = getattr(objecttype, 'get_connection', None) if not get_connection: get_connection = partial(get_default_connection, objecttype) objecttype.Connection = get_connection() - if require_get_node: - assert hasattr(objecttype, 'get_node'), ( - '{}.get_node method is required by the Node interface.' - ).format(objecttype.__name__) diff --git a/graphene/relay/tests/test_connection.py b/graphene/relay/tests/test_connection.py index a1355c4a..01680bf6 100644 --- a/graphene/relay/tests/test_connection.py +++ b/graphene/relay/tests/test_connection.py @@ -10,10 +10,6 @@ class MyObject(ObjectType): interfaces = [Node] field = String() - @classmethod - def get_node(cls, id): - pass - def test_connection(): class MyObjectConnection(Connection): diff --git a/graphene/relay/tests/test_connection_query.py b/graphene/relay/tests/test_connection_query.py index 2e6b05ba..aca60a91 100644 --- a/graphene/relay/tests/test_connection_query.py +++ b/graphene/relay/tests/test_connection_query.py @@ -11,10 +11,8 @@ letter_chars = ['A', 'B', 'C', 'D', 'E'] class Letter(ObjectType): class Meta: interfaces = (Node, ) - letter = String() - def get_node(*args, **kwargs): - pass + letter = String() class Query(ObjectType): diff --git a/graphene/relay/tests/test_node.py b/graphene/relay/tests/test_node.py index 421ef695..ef35f409 100644 --- a/graphene/relay/tests/test_node.py +++ b/graphene/relay/tests/test_node.py @@ -49,26 +49,6 @@ class RootQuery(ObjectType): schema = Schema(query=RootQuery, types=[MyNode, MyOtherNode]) -def test_node_no_get_node(): - with pytest.raises(AssertionError) as excinfo: - class MyNode(ObjectType): - - class Meta: - interfaces = (Node, ) - - assert "MyNode.get_node method is required by the Node interface." == str(excinfo.value) - - -def test_node_no_get_node_with_meta(): - with pytest.raises(AssertionError) as excinfo: - class MyNode(ObjectType): - - class Meta: - interfaces = (Node, ) - - assert "MyNode.get_node method is required by the Node interface." == str(excinfo.value) - - def test_node_good(): assert 'id' in MyNode._meta.fields