|
@@ -213,6 +213,27 @@ class EmType(EmComponent):
|
213
|
213
|
def superiors(self):
|
214
|
214
|
return {nature: [self.model.component(superior_uid) for superior_uid in superiors_uid] for nature, superiors_uid in self.superiors_list.items()}
|
215
|
215
|
|
|
216
|
+ ## @brief Given a relation's nature return all the possible type to add as superiors
|
|
217
|
+ # @param relation_nature str | None : if None check for all natures
|
|
218
|
+ # @return a list or a dict with nature as key
|
|
219
|
+ def possible_superiors(self, relation_nature = None):
|
|
220
|
+ if relation_nature is None:
|
|
221
|
+ ret = {}
|
|
222
|
+ for nat in EmNature.getall():
|
|
223
|
+ ret[nat] = self.possible_superiors(nat)
|
|
224
|
+ return ret
|
|
225
|
+
|
|
226
|
+ #One nature
|
|
227
|
+ if relation_nature not in self.classtype['hierarchy']:
|
|
228
|
+ return []
|
|
229
|
+
|
|
230
|
+ att = self.classtype['hierarchy'][relation_nature]['attach']
|
|
231
|
+ if att == 'type':
|
|
232
|
+ return [ self ]
|
|
233
|
+ else:
|
|
234
|
+ return [ t for t in self.model.components(EmType) if t.classtype == self.classtype ]
|
|
235
|
+
|
|
236
|
+
|
216
|
237
|
## Add a superior in the type hierarchy
|
217
|
238
|
# @param em_type EmType: An EmType instance
|
218
|
239
|
# @param relation_nature str: The name of the relation's nature
|