Skip to content

Commit

Permalink
fix modellist field/widget labels list
Browse files Browse the repository at this point in the history
with previous commit fields could be filtered according to form
permissions
  • Loading branch information
Bertrand Mathieu committed Jan 15, 2016
1 parent 17d1511 commit 51a8555
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 12 deletions.
20 changes: 20 additions & 0 deletions abilian/web/forms/fields.py
Expand Up @@ -106,6 +106,26 @@ class ModelFieldList(FilterFieldListMixin, BaseModelFieldList):
Filter empty entries before saving and refills before displaying
"""

def __init__(self, *args, **kwargs):
super(ModelFieldList, self).__init__(*args, **kwargs)

# build visible field list for widget. We must do it during form
# instanciation so as to have permission filtering
field_names = []
labels = []
fieldsubform = self.unbound_field.bind(form=None, name='dummy',
_meta=self.meta)
subform = fieldsubform.form_class()
for f in subform:
if f.is_hidden:
continue
name = f.short_name
field_names.append(name)
labels.append(f.label.text if f.label else f.name)

self._field_names = field_names
self._field_labels = labels

def __call__(self, **kwargs):
"""
Refill with default min_entry, which were possibly
Expand Down
14 changes: 2 additions & 12 deletions abilian/web/forms/widgets.py
Expand Up @@ -1347,18 +1347,8 @@ def render_view(self, field, **kwargs):
return render_template(self.template, field=field, labels=(),
rows=(), **kwargs)

field_names = []
labels = []

fieldsubform = field.unbound_field.bind(form=None, name='dummy', _meta=field.meta)
subform = fieldsubform.form_class()
for f in subform:
if f.is_hidden:
continue
name = f.short_name
field_names.append(name)
labels.append(f.label.text if f.label else f.name)

field_names = field._field_names
labels = field._field_labels
data_type = field.entries[0].object_data.__class__.__name__ + 'Data'
Data = namedtuple(data_type, field_names)
labels = Data(*labels)
Expand Down

0 comments on commit 51a8555

Please sign in to comment.