371 attrs_fs_label += ('<div class="iformTitle"><span>%s</span></div>' |
371 attrs_fs_label += ('<div class="iformTitle"><span>%s</span></div>' |
372 % self._cw._(self.main_form_title)) |
372 % self._cw._(self.main_form_title)) |
373 attrs_fs_label += '<div class="formBody">' |
373 attrs_fs_label += '<div class="formBody">' |
374 return attrs_fs_label + super(EntityFormRenderer, self).open_form(form, values) |
374 return attrs_fs_label + super(EntityFormRenderer, self).open_form(form, values) |
375 |
375 |
376 def render_fields(self, w, form, values): |
|
377 super(EntityFormRenderer, self).render_fields(w, form, values) |
|
378 self.inline_entities_form(w, form) |
|
379 |
|
380 def _render_fields(self, fields, w, form): |
376 def _render_fields(self, fields, w, form): |
381 if not form.edited_entity.has_eid() or form.edited_entity.has_perm('update'): |
377 if not form.edited_entity.has_eid() or form.edited_entity.has_perm('update'): |
382 super(EntityFormRenderer, self)._render_fields(fields, w, form) |
378 super(EntityFormRenderer, self)._render_fields(fields, w, form) |
383 |
379 |
384 def render_buttons(self, w, form): |
380 def render_buttons(self, w, form): |
393 </td></tr> |
389 </td></tr> |
394 </tbody> |
390 </tbody> |
395 </table>""" % tuple(button.render(form) for button in form.form_buttons)) |
391 </table>""" % tuple(button.render(form) for button in form.form_buttons)) |
396 else: |
392 else: |
397 super(EntityFormRenderer, self).render_buttons(w, form) |
393 super(EntityFormRenderer, self).render_buttons(w, form) |
398 # NOTE: should_* and display_* method extracted and moved to the form to |
|
399 # ease overriding |
|
400 |
|
401 def inline_entities_form(self, w, form): |
|
402 """create a form to edit entity's inlined relations""" |
|
403 if not hasattr(form, 'inlined_form_views'): |
|
404 return |
|
405 keysinorder = [] |
|
406 formviews = form.inlined_form_views() |
|
407 for formview in formviews: |
|
408 if not (formview.rtype, formview.role) in keysinorder: |
|
409 keysinorder.append( (formview.rtype, formview.role) ) |
|
410 for key in keysinorder: |
|
411 self.inline_relation_form(w, form, [fv for fv in formviews |
|
412 if (fv.rtype, fv.role) == key]) |
|
413 |
|
414 def inline_relation_form(self, w, form, formviews): |
|
415 i18nctx = 'inlined:%s.%s.%s' % (form.edited_entity.e_schema, |
|
416 formviews[0].rtype, formviews[0].role) |
|
417 w(u'<div id="inline%sslot">' % formviews[0].rtype) |
|
418 for formview in formviews: |
|
419 w(formview.render(i18nctx=i18nctx, row=formview.cw_row, col=formview.cw_col)) |
|
420 w(u'</div>') |
|
421 |
394 |
422 |
395 |
423 class EntityInlinedFormRenderer(EntityFormRenderer): |
396 class EntityInlinedFormRenderer(EntityFormRenderer): |
424 """specific renderer for entity inlined edition form |
397 """specific renderer for entity inlined edition form |
425 (inline-[creation|edition]) |
398 (inline-[creation|edition]) |
458 w(u'</fieldset>') |
431 w(u'</fieldset>') |
459 w(u'<fieldset class="subentity">') |
432 w(u'<fieldset class="subentity">') |
460 if fields: |
433 if fields: |
461 self._render_fields(fields, w, form) |
434 self._render_fields(fields, w, form) |
462 self.render_child_forms(w, form, values) |
435 self.render_child_forms(w, form, values) |
463 self.inline_entities_form(w, form) |
|
464 w(u'</fieldset>') |
436 w(u'</fieldset>') |
465 |
437 |