262 super(AddRelatedActions, self).fill_menu(box, menu) |
262 super(AddRelatedActions, self).fill_menu(box, menu) |
263 |
263 |
264 def actual_actions(self): |
264 def actual_actions(self): |
265 entity = self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0) |
265 entity = self.cw_rset.get_entity(self.cw_row or 0, self.cw_col or 0) |
266 eschema = entity.e_schema |
266 eschema = entity.e_schema |
267 for rschema, teschema, x in self.add_related_schemas(entity): |
267 for rschema, teschema, role in self.add_related_schemas(entity): |
268 if x == 'subject': |
268 if rschema.role_rdef(eschema, teschema, role).role_cardinality(role) in '1?': |
269 label = 'add %s %s %s %s' % (eschema, rschema, teschema, x) |
269 if entity.related(rschema, role): |
|
270 continue |
|
271 if role == 'subject': |
|
272 label = 'add %s %s %s %s' % (eschema, rschema, teschema, role) |
270 url = self.linkto_url(entity, rschema, teschema, 'object') |
273 url = self.linkto_url(entity, rschema, teschema, 'object') |
271 else: |
274 else: |
272 label = 'add %s %s %s %s' % (teschema, rschema, eschema, x) |
275 label = 'add %s %s %s %s' % (teschema, rschema, eschema, role) |
273 url = self.linkto_url(entity, rschema, teschema, 'subject') |
276 url = self.linkto_url(entity, rschema, teschema, 'subject') |
274 yield self.build_action(self._cw._(label), url) |
277 yield self.build_action(self._cw._(label), url) |
275 |
278 |
276 def add_related_schemas(self, entity): |
279 def add_related_schemas(self, entity): |
277 """this is actually used ui method to generate 'addrelated' actions from |
280 """this is actually used ui method to generate 'addrelated' actions from |