143 self.w(u'<table>') |
143 self.w(u'<table>') |
144 for rschema, role, dispctrl, value in display_attributes: |
144 for rschema, role, dispctrl, value in display_attributes: |
145 try: |
145 try: |
146 self._render_attribute(dispctrl, rschema, value, |
146 self._render_attribute(dispctrl, rschema, value, |
147 role=role, table=True) |
147 role=role, table=True) |
|
148 warn('[3.9] _render_attribute prototype has changed and ' |
|
149 'renamed to render_attribute, please update %s' |
|
150 % self.__class___, DeprecationWarning) |
148 except TypeError: |
151 except TypeError: |
149 warn('[3.6] _render_attribute prototype has changed, please' |
|
150 ' update %s' % self.__class___, DeprecationWarning) |
|
151 self._render_attribute(rschema, value, role=role, table=True) |
152 self._render_attribute(rschema, value, role=role, table=True) |
|
153 warn('[3.6] _render_attribute prototype has changed and ' |
|
154 'renamed to render_attribute, please update %s' |
|
155 % self.__class___, DeprecationWarning) |
|
156 except AttributeError: |
|
157 label = self._rel_label(entity, rschema, role, dispctrl) |
|
158 self.render_attribute(label, value, table=True) |
152 self.w(u'</table>') |
159 self.w(u'</table>') |
|
160 |
|
161 def render_attribute(self, label, value, table=False): |
|
162 self.field(label, value, tr=False, table=table) |
153 |
163 |
154 def render_entity_relations(self, entity): |
164 def render_entity_relations(self, entity): |
155 for rschema, tschemas, role, dispctrl in self._section_def(entity, 'relations'): |
165 for rschema, tschemas, role, dispctrl in self._section_def(entity, 'relations'): |
156 if rschema.final or dispctrl.get('rtypevid'): |
166 if rschema.final or dispctrl.get('rtypevid'): |
157 vid = dispctrl.get('vid', 'reledit') |
167 vid = dispctrl.get('vid', 'reledit') |
158 try: |
168 try: |
159 rview = self._cw.vreg['views'].select( |
169 rview = self._cw.vreg['views'].select( |
160 vid, self._cw, rset=entity.cw_rset, row=entity.cw_row, |
170 vid, self._cw, rset=entity.cw_rset, row=entity.cw_row, |
161 col=entity.cw_col, dispctrl=dispctrl, rtype=rschema, role=role) |
171 col=entity.cw_col, dispctrl=dispctrl, |
|
172 rtype=rschema, role=role) |
162 except NoSelectableObject: |
173 except NoSelectableObject: |
163 continue |
174 continue |
164 self.w(u'<div class="section">') |
175 value = rview.render(row=entity.cw_row, col=entity.cw_col, |
165 label = self._rel_label(entity, rschema, role, dispctrl) |
176 rtype=rschema.type, role=role) |
166 if label: |
177 else: |
167 self.w(u'<h4>%s</h4>' % label) |
178 rset = self._relation_rset(entity, rschema, role, dispctrl) |
168 rview.render(row=entity.cw_row, col=entity.cw_col, w=self.w, |
179 if not rset: |
169 rtype=rschema.type, role=role) |
180 continue |
170 self.w(u'</div>') |
181 if hasattr(self, '_render_relation'): |
171 continue |
182 try: |
172 rset = self._relation_rset(entity, rschema, role, dispctrl) |
183 self._render_relation(dispctrl, rset, 'autolimited') |
173 if rset: |
184 warn('[3.9] _render_relation prototype has changed and has ' |
174 try: |
185 'been renamed to render_relation, please update %s' |
175 self._render_relation(dispctrl, rset, 'autolimited') |
186 % self.__class__, DeprecationWarning) |
176 except TypeError: |
187 except TypeError: |
177 warn('[3.6] _render_relation prototype has changed, ' |
188 self._render_relation(rset, dispctrl, 'autolimited', |
178 'please update %s' % self.__class__, DeprecationWarning) |
189 self.show_rel_label) |
179 self._render_relation(rset, dispctrl, 'autolimited', |
190 warn('[3.6] _render_relation prototype has changed and has ' |
180 self.show_rel_label) |
191 'been renamed to render_relation, please update %s' |
|
192 % self.__class__, DeprecationWarning) |
|
193 continue |
|
194 vid = dispctrl.get('vid', 'autolimited') |
|
195 try: |
|
196 rview = self._cw.vreg['views'].select( |
|
197 vid, self._cw, rset=rset, dispctrl=dispctrl) |
|
198 except NoSelectableObject: |
|
199 continue |
|
200 value = rview.render() |
|
201 label = self._rel_label(entity, rschema, role, dispctrl) |
|
202 self.render_relation(label, value) |
|
203 |
|
204 def render_relation(self, label, value): |
|
205 self.w(u'<div class="section">') |
|
206 if label: |
|
207 self.w(u'<h4>%s</h4>' % label) |
|
208 self.w(value) |
|
209 self.w(u'</div>') |
181 |
210 |
182 def render_side_boxes(self, boxes): |
211 def render_side_boxes(self, boxes): |
183 """display side related relations: |
212 """display side related relations: |
184 non-meta in a first step, meta in a second step |
213 non-meta in a first step, meta in a second step |
185 """ |
214 """ |
250 return |
279 return |
251 if 'filter' in dispctrl: |
280 if 'filter' in dispctrl: |
252 rset = dispctrl['filter'](rset) |
281 rset = dispctrl['filter'](rset) |
253 return rset |
282 return rset |
254 |
283 |
255 def _render_relation(self, dispctrl, rset, defaultvid): |
|
256 self.w(u'<div class="section">') |
|
257 if dispctrl.get('showlabel', self.show_rel_label): |
|
258 self.w(u'<h4>%s</h4>' % self._cw._(dispctrl['label'])) |
|
259 self.wview(dispctrl.get('vid', defaultvid), rset, |
|
260 initargs={'dispctrl': dispctrl}) |
|
261 self.w(u'</div>') |
|
262 |
|
263 def _render_attribute(self, dispctrl, rschema, value, |
|
264 role='subject', table=False): |
|
265 if rschema.final: |
|
266 showlabel = dispctrl.get('showlabel', self.show_attr_label) |
|
267 else: |
|
268 showlabel = dispctrl.get('showlabel', self.show_rel_label) |
|
269 if dispctrl.get('label'): |
|
270 label = self._cw._(dispctrl.get('label')) |
|
271 else: |
|
272 label = display_name(self._cw, rschema.type, role) |
|
273 self.field(label, value, show_label=showlabel, tr=False, table=table) |
|
274 |
|
275 def _rel_label(self, entity, rschema, role, dispctrl): |
284 def _rel_label(self, entity, rschema, role, dispctrl): |
276 if rschema.final: |
285 if rschema.final: |
277 showlabel = dispctrl.get('showlabel', self.show_attr_label) |
286 showlabel = dispctrl.get('showlabel', self.show_attr_label) |
278 else: |
287 else: |
279 showlabel = dispctrl.get('showlabel', self.show_rel_label) |
288 showlabel = dispctrl.get('showlabel', self.show_rel_label) |