1
+ from graphene import Enum
2
+
3
+
1
4
class Registry (object ):
2
5
def __init__ (self ):
3
6
self ._registry = {}
4
7
self ._registry_string_map = {}
8
+ self ._registry_enum = {}
5
9
6
10
def register (self , cls ):
7
11
from .types import GrapheneMongoengineObjectTypes
8
12
9
13
assert issubclass (
10
14
cls ,
11
15
GrapheneMongoengineObjectTypes
12
- ), 'Only Mongoengine object types can be registered, received "{}"' .format (
16
+ ), 'Only Mongoengine object types can be registered, received "{}"' .format (
13
17
cls .__name__
14
18
)
15
19
assert cls ._meta .registry == self , "Registry for a Model have to match."
@@ -20,9 +24,22 @@ def register(self, cls):
20
24
for model , cls in self ._registry .items ():
21
25
cls .rescan_fields ()
22
26
27
+ def register_enum (self , cls ):
28
+ from enum import EnumMeta
29
+ assert type (cls ) == EnumMeta , 'Only EnumMeta can be registered, received "{}"' .format (
30
+ cls .__name__
31
+ )
32
+ self ._registry_enum [cls ] = Enum .from_enum (cls )
33
+
23
34
def get_type_for_model (self , model ):
24
35
return self ._registry .get (model )
25
36
37
+ def check_enum_already_exist (self , cls ):
38
+ return cls in self ._registry_enum
39
+
40
+ def get_type_for_enum (self , cls ):
41
+ return self ._registry_enum .get (cls )
42
+
26
43
27
44
registry = None
28
45
inputs_registry = None
0 commit comments