web/views/formrenderers.py
changeset 4378 785c56bdacc6
parent 4314 e12ee4a009bc
child 4380 5613d7c06339
equal deleted inserted replaced
4377:0e9cf6593382 4378:785c56bdacc6
   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