web/views/editforms.py
changeset 2234 1fbcf202882d
parent 2058 7ef12c03447c
parent 2224 52041b014949
child 2293 7ded2a1416e4
equal deleted inserted replaced
2209:2b91abd9f5a4 2234:1fbcf202882d
   100         rschema = self.schema.rschema(rtype)
   100         rschema = self.schema.rschema(rtype)
   101         entity = self.entity(row, col)
   101         entity = self.entity(row, col)
   102         if not default:
   102         if not default:
   103             default = self.req._('not specified')
   103             default = self.req._('not specified')
   104         if rschema.is_final():
   104         if rschema.is_final():
   105             if getattr(entity, rtype) is None:
   105             value = entity.printable_value(rtype)
   106                 value = default
   106             if not entity.has_perm('update'):
   107             else:
   107                 self.w(value)
   108                 value = entity.printable_value(rtype)
   108                 return
   109         else:
   109         else:
   110             rset = entity.related(rtype, role)
   110             rset = entity.related(rtype, role)
   111             # XXX html_escape but that depends of the actual vid
   111             # XXX html_escape but that depends of the actual vid
   112             value = html_escape(self.view(vid, rset, 'null') or default)
   112             value = html_escape(self.view(vid, rset, 'null') or default)
   113         if not entity.has_perm('update'):
   113         # XXX consider local roles ?
       
   114         if role == 'subject'and not rschema.has_perm(self.req, 'add',
       
   115                                                     fromeid=entity.eid):
   114             self.w(value)
   116             self.w(value)
   115             return
   117             return
       
   118         elif role == 'object'and not rschema.has_perm(self.req, 'add',
       
   119                                                       toeid=entity.eid):
       
   120             self.w(value)
       
   121             return
       
   122         if not value.strip():
       
   123             value = default
   116         if rschema.is_final():
   124         if rschema.is_final():
   117             form = self._build_attribute_form(entity, value, rtype, role,
   125             form = self._build_attribute_form(entity, value, rtype, role,
   118                                               reload, row, col, default)
   126                                               reload, row, col, default)
   119         else:
   127         else:
   120             form = self._build_relation_form(entity, value, rtype, role,
   128             form = self._build_relation_form(entity, value, rtype, role,