mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-02 20:54:16 +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()
|
home_planet = graphene.String()
|
||||||
|
|
||||||
def resolve_friends(self, args, *_):
|
def resolve_friends(self, args, *_):
|
||||||
print 'resolve_friends'
|
|
||||||
# The character friends is a list of strings
|
# The character friends is a list of strings
|
||||||
return [get_character(f) for f in self.friends]
|
return [get_character(f) for f in self.friends]
|
||||||
|
|
||||||
|
@ -32,10 +31,8 @@ class Droid(graphene.ObjectType):
|
||||||
primary_function = graphene.String()
|
primary_function = graphene.String()
|
||||||
|
|
||||||
def resolve_friends(self, args, *_):
|
def resolve_friends(self, args, *_):
|
||||||
print 'resolve_friends'
|
|
||||||
# print self.name
|
|
||||||
# The character friends is a list of strings
|
# 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):
|
class Query(graphene.ObjectType):
|
||||||
|
@ -51,7 +48,6 @@ class Query(graphene.ObjectType):
|
||||||
|
|
||||||
@resolve_only_args
|
@resolve_only_args
|
||||||
def resolve_hero(self, episode=None):
|
def resolve_hero(self, episode=None):
|
||||||
print 'get_hero', get_hero(episode)
|
|
||||||
return get_hero(episode)
|
return get_hero(episode)
|
||||||
|
|
||||||
@resolve_only_args
|
@resolve_only_args
|
||||||
|
|
|
@ -152,7 +152,7 @@ class GrapheneObjectType(GrapheneFieldsType, GraphQLObjectType):
|
||||||
from ..utils.get_graphql_type import get_graphql_type
|
from ..utils.get_graphql_type import get_graphql_type
|
||||||
try:
|
try:
|
||||||
graphql_type = get_graphql_type(type(interface))
|
graphql_type = get_graphql_type(type(interface))
|
||||||
return graphql_type == self or graphql_type in self._provided_interfaces
|
return graphql_type == self
|
||||||
except:
|
except:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -60,18 +60,40 @@ class Field(GraphQLField, OrderedType):
|
||||||
def type(self, type):
|
def type(self, type):
|
||||||
self._type = type
|
self._type = type
|
||||||
|
|
||||||
@property
|
|
||||||
def args(self):
|
|
||||||
return self._args
|
|
||||||
|
|
||||||
@args.setter
|
|
||||||
def args(self, args):
|
|
||||||
self._args = args
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def resolver(self):
|
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
|
@resolver.setter
|
||||||
def resolver(self, resolver):
|
def resolver(self, resolver):
|
||||||
self._resolver = 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