web/views/autoform.py
changeset 4587 70d47389630c
parent 4567 bf3453789887
parent 4585 912aba7e6400
child 4625 d8c3a50a8ee7
--- a/web/views/autoform.py	Thu Feb 11 12:19:08 2010 +0100
+++ b/web/views/autoform.py	Mon Feb 15 18:44:47 2010 +0100
@@ -85,7 +85,10 @@
 
     def __init__(self, *args, **kwargs):
         for attr in self._select_attrs:
-            setattr(self, attr, kwargs.pop(attr, None))
+            # don't pop attributes from kwargs, so the end-up in
+            # self.cw_extra_kwargs which is then passed to the edition form (see
+            # the .form method)
+            setattr(self, attr, kwargs.get(attr))
         super(InlineEntityEditionFormView, self).__init__(*args, **kwargs)
 
     def _entity(self):
@@ -384,7 +387,11 @@
             related = []
             if entity.has_eid():
                 rset = entity.related(rschema, role, limit=form.related_limit)
-                if rschema.has_perm(form._cw, 'delete'):
+                if role == 'subject':
+                    haspermkwargs = {'fromeid': entity.eid}
+                else:
+                    haspermkwargs = {'toeid': entity.eid}
+                if rschema.has_perm(form._cw, 'delete', **haspermkwargs):
                     toggleable_rel_link_func = toggleable_relation_link
                 else:
                     toggleable_rel_link_func = lambda x, y, z: u''
@@ -650,7 +657,7 @@
             return self.display_fields
         # XXX we should simply put eid in the generated section, no?
         return [(rtype, role) for rtype, _, role in self._relations_by_section(
-            'attributes', strict=strict) if rtype != 'eid']
+            'attributes', 'update', strict) if rtype != 'eid']
 
     def editable_relations(self):
         """return a sorted list of (relation's label, relation'schema, role) for