Skip to content

Commit 8fa6d61

Browse files
author
markus
committed
Added optional parent type to allow usage of GlobalID in mutations.
1 parent 5f7af3e commit 8fa6d61

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

graphene/relay/node.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,19 @@ class Meta:
3535

3636
class GlobalID(Field):
3737

38-
def __init__(self, node=None, required=True, *args, **kwargs):
38+
def __init__(self, node=None, parent_type=None, required=True, *args, **kwargs):
3939
super(GlobalID, self).__init__(ID, required=required, *args, **kwargs)
4040
self.node = node or Node
41+
self.parent_type_name = parent_type._meta.name if parent_type else None
4142

4243
@staticmethod
43-
def id_resolver(parent_resolver, node, root, args, context, info):
44-
id = parent_resolver(root, args, context, info)
45-
return node.to_global_id(info.parent_type.name, id) # root._meta.name
44+
def id_resolver(parent_resolver, node, root, args, context, info, parent_type_name=None):
45+
type_id = parent_resolver(root, args, context, info)
46+
parent_type_name = parent_type_name or info.parent_type.name
47+
return node.to_global_id(parent_type_name, type_id) # root._meta.name
4648

4749
def get_resolver(self, parent_resolver):
48-
return partial(self.id_resolver, parent_resolver, self.node)
50+
return partial(self.id_resolver, parent_resolver, self.node, parent_type_name=self._parent_type_name)
4951

5052

5153
class NodeMeta(InterfaceMeta):

0 commit comments

Comments
 (0)