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, |