14
14
is_node
15
15
)
16
16
from graphene .types .json import JSONString
17
- from mongoengine import fields
18
17
from mongoengine .base import get_document
19
18
20
19
from . import advanced_types
21
- from .registry import get_global_registry
22
20
from .utils import (
23
21
import_single_dispatch , get_field_description ,
24
22
)
25
23
26
24
singledispatch = import_single_dispatch ()
27
25
26
+ _union_registry = {}
27
+
28
28
29
29
class MongoEngineConversionError (Exception ):
30
30
pass
@@ -120,8 +120,8 @@ def convert_field_to_union(field, registry=None):
120
120
121
121
_types = []
122
122
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 )
125
125
_type = _field .get_type ()
126
126
if _type :
127
127
_types .append (_type .type )
@@ -132,11 +132,12 @@ def convert_field_to_union(field, registry=None):
132
132
if len (_types ) == 0 :
133
133
return None
134
134
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 ))
140
141
141
142
142
143
@convert_mongoengine_field .register (mongoengine .EmbeddedDocumentField )
0 commit comments