1414 is_node
1515)
1616from graphene .types .json import JSONString
17- from mongoengine import fields
1817from mongoengine .base import get_document
1918
2019from . import advanced_types
21- from .registry import get_global_registry
2220from .utils import (
2321 import_single_dispatch , get_field_description ,
2422)
2523
2624singledispatch = import_single_dispatch ()
2725
26+ _union_registry = {}
27+
2828
2929class MongoEngineConversionError (Exception ):
3030 pass
@@ -120,8 +120,8 @@ def convert_field_to_union(field, registry=None):
120120
121121 _types = []
122122 for choice in field .choices :
123- field = fields .ReferenceField (get_document (choice ))
124- _field = convert_mongoengine_field (field , get_global_registry () )
123+ _field = mongoengine .ReferenceField (get_document (choice ))
124+ _field = convert_mongoengine_field (_field , registry )
125125 _type = _field .get_type ()
126126 if _type :
127127 _types .append (_type .type )
@@ -132,11 +132,12 @@ def convert_field_to_union(field, registry=None):
132132 if len (_types ) == 0 :
133133 return None
134134
135- class U (Union ):
136- class Meta :
137- types = tuple (_types )
138-
139- return Field (U )
135+ print ('*' * 50 )
136+ print (field .__dict__ )
137+ name = field ._owner_document .__name__ + '_' + field .db_field + '_union'
138+ Meta = type ('Meta' , (object , ), {'types' : tuple (_types )})
139+ _union_registry [name ] = type (name , (Union , ), {'Meta' : Meta })
140+ return Field (_union_registry .get (name ))
140141
141142
142143@convert_mongoengine_field .register (mongoengine .EmbeddedDocumentField )
0 commit comments