mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-02 12:44:15 +03:00
Fixed resolve context
This commit is contained in:
parent
6c42877758
commit
a1454fdd74
|
@ -22,7 +22,6 @@ class Human(graphene.ObjectType):
|
|||
home_planet = graphene.String()
|
||||
|
||||
def resolve_friends(self, args, *_):
|
||||
print 'resolve_friends'
|
||||
# The character friends is a list of strings
|
||||
return [get_character(f) for f in self.friends]
|
||||
|
||||
|
@ -32,10 +31,8 @@ class Droid(graphene.ObjectType):
|
|||
primary_function = graphene.String()
|
||||
|
||||
def resolve_friends(self, args, *_):
|
||||
print 'resolve_friends'
|
||||
# print self.name
|
||||
# The character friends is a list of strings
|
||||
return [get_character() for f in self.friends]
|
||||
return [get_character(f) for f in self.friends]
|
||||
|
||||
|
||||
class Query(graphene.ObjectType):
|
||||
|
@ -51,7 +48,6 @@ class Query(graphene.ObjectType):
|
|||
|
||||
@resolve_only_args
|
||||
def resolve_hero(self, episode=None):
|
||||
print 'get_hero', get_hero(episode)
|
||||
return get_hero(episode)
|
||||
|
||||
@resolve_only_args
|
||||
|
|
|
@ -152,7 +152,7 @@ class GrapheneObjectType(GrapheneFieldsType, GraphQLObjectType):
|
|||
from ..utils.get_graphql_type import get_graphql_type
|
||||
try:
|
||||
graphql_type = get_graphql_type(type(interface))
|
||||
return graphql_type == self or graphql_type in self._provided_interfaces
|
||||
return graphql_type == self
|
||||
except:
|
||||
return False
|
||||
|
||||
|
|
|
@ -60,18 +60,40 @@ class Field(GraphQLField, OrderedType):
|
|||
def type(self, type):
|
||||
self._type = type
|
||||
|
||||
@property
|
||||
def args(self):
|
||||
return self._args
|
||||
|
||||
@args.setter
|
||||
def args(self, args):
|
||||
self._args = args
|
||||
|
||||
@property
|
||||
def resolver(self):
|
||||
return self._resolver or getattr(self.parent(), 'resolve_{}'.format(self.attname), None)
|
||||
def default_resolver(root, args, context, info):
|
||||
return getattr(root, self.source or self.attname, None)
|
||||
|
||||
resolver = getattr(self.parent, 'resolve_{}'.format(self.attname), default_resolver)
|
||||
|
||||
def resolver_wrapper(root, *args, **kwargs):
|
||||
if not isinstance(root, self.parent):
|
||||
root = self.parent()
|
||||
return resolver(root, *args, **kwargs)
|
||||
|
||||
return self._resolver or resolver_wrapper
|
||||
|
||||
@resolver.setter
|
||||
def resolver(self, resolver):
|
||||
self._resolver = resolver
|
||||
|
||||
def __copy__(self):
|
||||
field = Field(
|
||||
type=self._type,
|
||||
args=self.args,
|
||||
resolver=self._resolver,
|
||||
source=self.source,
|
||||
deprecation_reason=self.deprecation_reason,
|
||||
name=self._name,
|
||||
description=self.description,
|
||||
_creation_counter=self.creation_counter,
|
||||
)
|
||||
field.attname = self.attname
|
||||
field.parent = self.parent
|
||||
return field
|
||||
|
||||
def __str__(self):
|
||||
if not self.parent:
|
||||
return 'Not bounded field'
|
||||
return "{}.{}".format(self.parent._meta.graphql_type, self.attname)
|
||||
|
|
Loading…
Reference in New Issue
Block a user