40 def append_field(self, *args): |
40 def append_field(self, *args): |
41 pass |
41 pass |
42 def field_by_name(self, rtype, role, eschema=None): |
42 def field_by_name(self, rtype, role, eschema=None): |
43 return None |
43 return None |
44 |
44 |
45 class ClickAndEditFormView(FormViewMixIn, EntityView): |
45 class ClickAndEditFormView(EntityView): |
46 __regid__ = 'doreledit' |
46 __regid__ = 'doreledit' |
47 __select__ = non_final_entity() & match_kwargs('rtype') |
47 __select__ = non_final_entity() & match_kwargs('rtype') |
48 |
48 |
49 # ui side continuations |
49 # ui side continuations |
50 _onclick = (u"cw.reledit.loadInlineEditionForm('%(formid)s', %(eid)s, '%(rtype)s', '%(role)s', " |
50 _onclick = (u"cw.reledit.loadInlineEditionForm('%(formid)s', %(eid)s, '%(rtype)s', '%(role)s', " |
167 def _may_add_related(self, related_rset, entity, rschema, role, ttypes): |
167 def _may_add_related(self, related_rset, entity, rschema, role, ttypes): |
168 """ ok for attribute-like composite entities """ |
168 """ ok for attribute-like composite entities """ |
169 if self._is_composite(entity.e_schema, rschema, role): |
169 if self._is_composite(entity.e_schema, rschema, role): |
170 if len(ttypes) > 1: # wrong cardinality: do not handle |
170 if len(ttypes) > 1: # wrong cardinality: do not handle |
171 return False |
171 return False |
172 ttype = ttypes[0] |
172 rdef = rschema.role_rdef(entity.e_schema, ttypes[0], role) |
173 card = rschema.rdef(entity.e_schema, ttype).role_cardinality(role) |
173 card = rdef.role_cardinality(role) |
174 if related_rset and card in '?1': |
174 if related_rset and card in '?1': |
175 return False |
175 return False |
176 if rschema.has_perm(self._cw, 'add', toetype=ttype): |
176 if role == 'subject': |
|
177 kwargs = {'fromeid': entity.eid} |
|
178 else: |
|
179 kwargs = {'toeid': entity.eid} |
|
180 if rdef.has_perm(self._cw, 'add', **kwargs): |
177 return True |
181 return True |
178 return False |
182 return False |
179 |
183 |
180 def _may_edit_related_entity(self, related_rset, entity, rschema, role, ttypes): |
184 def _may_edit_related_entity(self, related_rset, entity, rschema, role, ttypes): |
181 """ controls the edition of the related entity """ |
185 """ controls the edition of the related entity """ |