|
@@ -9,7 +9,14 @@ from EditorialModel.fieldtypes.generic import GenericFieldType
|
9
|
9
|
# The name is not good but i've no other ideas for the moment
|
10
|
10
|
class LeFactory(object):
|
11
|
11
|
|
12
|
|
- def __init__(self):raise NotImplementedError("Not designed (yet?) to be implemented")
|
|
12
|
+ def __init__(LeFactory):raise NotImplementedError("Not designed (yet?) to be implemented")
|
|
13
|
+
|
|
14
|
+ ## @brief Convert an EmType or EmClass name in a python class name
|
|
15
|
+ # @param name str : The name
|
|
16
|
+ # @return name.title()
|
|
17
|
+ @staticmethod
|
|
18
|
+ def name2classname(name):
|
|
19
|
+ return name.title()
|
13
|
20
|
|
14
|
21
|
## @brief Return a call to a FieldType constructor given an EmField
|
15
|
22
|
# @param emfield EmField : An EmField
|
|
@@ -57,8 +64,13 @@ class LeObject(_LeObject):\n\
|
57
|
64
|
|
58
|
65
|
for emclass in model.components(EditorialModel.classes.EmClass):
|
59
|
66
|
cls_fields = dict()
|
|
67
|
+ cls_linked_types = list()
|
60
|
68
|
for field in emclass.fields():
|
61
|
69
|
cls_fields[field.name] = LeFactory.fieldtype_construct_from_field(field)
|
|
70
|
+ fti = field.fieldtype_instance()
|
|
71
|
+ if fti.name == 'rel2type':
|
|
72
|
+ #relationnal field/fieldtype
|
|
73
|
+ cls_linked_types.append(LeFactory.name2classname(model.component(fti.rel_to_type_id).name))
|
62
|
74
|
cls_fieldgroup = dict()
|
63
|
75
|
for fieldgroup in emclass.fieldgroups():
|
64
|
76
|
cls_fieldgroup[fieldgroup.name] = list()
|
|
@@ -68,21 +80,42 @@ class LeObject(_LeObject):\n\
|
68
|
80
|
result += "\n\
|
69
|
81
|
class %s(LeObject, LeClass):\n\
|
70
|
82
|
_fieldtypes = %s\n\
|
|
83
|
+ _linked_types = [%s]\n\
|
71
|
84
|
_fieldgroups = %s\n\
|
72
|
85
|
\n\
|
73
|
|
-"%(emclass.name.title(), cls_fields.__repr__(), cls_fieldgroup.__repr__())
|
|
86
|
+"%(
|
|
87
|
+ LeFactory.name2classname(emclass.name),
|
|
88
|
+ cls_fields.__repr__(),
|
|
89
|
+ ','.join(cls_linked_types),
|
|
90
|
+ cls_fieldgroup.__repr__()
|
|
91
|
+)
|
74
|
92
|
|
75
|
93
|
for emtype in model.components(EditorialModel.types.EmType):
|
76
|
94
|
type_fields = list()
|
|
95
|
+ type_superiors = list()
|
77
|
96
|
for field in emtype.fields():
|
78
|
97
|
type_fields.append(field.name)
|
79
|
98
|
|
|
99
|
+ for nat, sup_l in emtype.superiors().items():
|
|
100
|
+ type_superiors.append('%s:[%s]'%(
|
|
101
|
+ nat.__repr__(),
|
|
102
|
+ ','.join([ LeFactory.name2classname(sup.name) for sup in sup_l])
|
|
103
|
+ ))
|
|
104
|
+
|
|
105
|
+
|
80
|
106
|
result += "\n\
|
81
|
107
|
class %s(%s,LeType):\n\
|
82
|
108
|
_fields = %s\n\
|
|
109
|
+ _superiors = {%s}\n\
|
83
|
110
|
_leClass = %s\n\
|
84
|
111
|
\n\
|
85
|
|
-"%(emtype.name.title(), emtype.em_class.name.title(), type_fields.__repr__(), emtype.em_class.name.title())
|
|
112
|
+"%(
|
|
113
|
+ LeFactory.name2classname(emtype.name),
|
|
114
|
+ LeFactory.name2classname(emtype.em_class.name),
|
|
115
|
+ type_fields.__repr__(),
|
|
116
|
+ ','.join(type_superiors),
|
|
117
|
+ LeFactory.name2classname(emtype.em_class.name)
|
|
118
|
+)
|
86
|
119
|
|
87
|
120
|
return result
|
88
|
121
|
|