Fix a bug where you can not directly return

`relay.Connection.for_node(NodeType)(edges=edges, page_info=relay.PageInfo(has_next_page=has_next_page))` in a resolver
This commit is contained in:
Markus Padourek 2016-07-28 12:11:42 +01:00 committed by GitHub
parent 603d4770eb
commit 2a288eab9d

View File

@ -24,8 +24,8 @@ class ConnectionField(Field):
last=Int(), last=Int(),
description=description, description=description,
**kwargs) **kwargs)
self.connection_type = connection_type self.connection_type = connection_type or Connection
self.edge_type = edge_type self.edge_type = edge_type or Edge
@with_context @with_context
def resolver(self, instance, args, context, info): def resolver(self, instance, args, context, info):
@ -38,7 +38,7 @@ class ConnectionField(Field):
else: else:
resolved = super(ConnectionField, self).resolver(instance, args, info) resolved = super(ConnectionField, self).resolver(instance, args, info)
if isinstance(resolved, connection_type): if isinstance(resolved, self.connection_type):
return resolved return resolved
return self.from_list(connection_type, resolved, args, context, info) return self.from_list(connection_type, resolved, args, context, info)
@ -46,13 +46,10 @@ class ConnectionField(Field):
return connection_type.from_list(resolved, args, context, info) return connection_type.from_list(resolved, args, context, info)
def get_connection_type(self, node): def get_connection_type(self, node):
connection_type = self.connection_type or Connection return self.connection_type.for_node(node)
edge_type = self.get_edge_type(node)
return connection_type.for_node(node, edge_type=edge_type)
def get_edge_type(self, node): def get_edge_type(self, node):
edge_type = self.edge_type or Edge return self.edge_type.for_node(node)
return edge_type.for_node(node)
def get_type(self, schema): def get_type(self, schema):
from graphene.relay.utils import is_node from graphene.relay.utils import is_node