@@ -35,17 +35,19 @@ class Meta:
35
35
36
36
class GlobalID (Field ):
37
37
38
- def __init__ (self , node = None , required = True , * args , ** kwargs ):
38
+ def __init__ (self , node = None , parent_type = None , required = True , * args , ** kwargs ):
39
39
super (GlobalID , self ).__init__ (ID , required = required , * args , ** kwargs )
40
40
self .node = node or Node
41
+ self .parent_type_name = parent_type ._meta .name if parent_type else None
41
42
42
43
@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
46
48
47
49
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 )
49
51
50
52
51
53
class NodeMeta (InterfaceMeta ):
0 commit comments