web/formrenderers.py
branchtls-sprint
changeset 1434 42e57dbbc585
parent 1412 f3361e29d91f
child 1436 97774eb6443b
equal deleted inserted replaced
1433:091ac3ba5d51 1434:42e57dbbc585
    27     +--------------+--------------+
    27     +--------------+--------------+
    28     +---------+
    28     +---------+
    29     | buttons |
    29     | buttons |
    30     +---------+
    30     +---------+
    31     """
    31     """
       
    32     _options = ('display_fields', 'display_label', 'display_help',
       
    33                 'display_progress_div', 'button_bar_class')
    32     display_fields = None # None -> all fields
    34     display_fields = None # None -> all fields
    33     display_label = True
    35     display_label = True
    34     display_help = True
    36     display_help = True
    35     display_progress_div = True
    37     display_progress_div = True
    36     button_bar_class = u'formButtonBar'
    38     button_bar_class = u'formButtonBar'
    38     def __init__(self, **kwargs):
    40     def __init__(self, **kwargs):
    39         if self._set_options(kwargs):
    41         if self._set_options(kwargs):
    40             raise ValueError('unconsumed arguments %s' % kwargs)
    42             raise ValueError('unconsumed arguments %s' % kwargs)
    41 
    43 
    42     def _set_options(self, kwargs):
    44     def _set_options(self, kwargs):
    43         for key in ('display_fields', 'display_label', 'display_help',
    45         for key in self._options:
    44                     'display_progress_div', 'button_bar_class'):
       
    45             try:
    46             try:
    46                 setattr(self, key, kwargs.pop(key))
    47                 setattr(self, key, kwargs.pop(key))
    47             except KeyError:
    48             except KeyError:
    48                 continue
    49                 continue
    49         return kwargs
    50         return kwargs
   237         pass
   238         pass
   238     
   239     
   239     
   240     
   240 class EntityCompositeFormRenderer(FormRenderer):
   241 class EntityCompositeFormRenderer(FormRenderer):
   241     """specific renderer for multiple entities edition form (muledit)"""
   242     """specific renderer for multiple entities edition form (muledit)"""
       
   243     
   242     def render_fields(self, w, form, values):
   244     def render_fields(self, w, form, values):
   243         if not form.is_subform:
   245         if not form.is_subform:
   244             w(u'<table class="listing">')
   246             w(u'<table class="listing">')
   245         super(EntityCompositeFormRenderer, self).render_fields(w, form, values)
   247         super(EntityCompositeFormRenderer, self).render_fields(w, form, values)
   246         if not form.is_subform:
   248         if not form.is_subform:
   281             
   283             
   282 
   284 
   283             
   285             
   284 class EntityFormRenderer(FormRenderer):
   286 class EntityFormRenderer(FormRenderer):
   285     """specific renderer for entity edition form (edition)"""
   287     """specific renderer for entity edition form (edition)"""
       
   288     _options = FormRenderer._options + ('display_relations_form',)
       
   289     display_relations_form = True
   286         
   290         
   287     def render(self, form, values):
   291     def render(self, form, values):
   288         rendered = super(EntityFormRenderer, self).render(form, values)
   292         rendered = super(EntityFormRenderer, self).render(form, values)
   289         return rendered + u'</div>' # close extra div introducted by open_form
   293         return rendered + u'</div>' # close extra div introducted by open_form
   290         
   294         
   295         return attrs_fs_label + super(EntityFormRenderer, self).open_form(form, values)
   299         return attrs_fs_label + super(EntityFormRenderer, self).open_form(form, values)
   296 
   300 
   297     def render_fields(self, w, form, values):
   301     def render_fields(self, w, form, values):
   298         super(EntityFormRenderer, self).render_fields(w, form, values)
   302         super(EntityFormRenderer, self).render_fields(w, form, values)
   299         self.inline_entities_form(w, form)
   303         self.inline_entities_form(w, form)
   300         if form.edited_entity.has_eid():
   304         if form.edited_entity.has_eid() and self.display_relations_table:
   301             self.relations_form(w, form)
   305             self.relations_form(w, form)
   302 
   306 
   303     def _render_fields(self, fields, w, form):
   307     def _render_fields(self, fields, w, form):
   304         if not form.edited_entity.has_eid() or form.edited_entity.has_perm('update'):
   308         if not form.edited_entity.has_eid() or form.edited_entity.has_perm('update'):
   305             super(EntityFormRenderer, self)._render_fields(fields, w, form)
   309             super(EntityFormRenderer, self)._render_fields(fields, w, form)