Skip to content
This repository was archived by the owner on May 29, 2024. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 22 additions & 10 deletions formbar/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -731,18 +731,30 @@ class SelectionField(CollectionField):
def get_options(self):
options = []
user_defined_options = self._config.options
if isinstance(user_defined_options, list) and \
len(user_defined_options) > 0:
for option in self.filter_options(user_defined_options):
options.append((option[0], option[1], option[2]))
elif isinstance(user_defined_options, str):
for option in self._form.merged_data.get(user_defined_options):
options.append((option[0], option[1], True))
elif self._form._item and hasattr(self._form._item, "get_options"):
for option in self._form._item.get_options(self.name):
options.append((option[0], option[1], True))
is_option_list = isinstance(user_defined_options, list) and len(user_defined_options)
is_string_options = isinstance(user_defined_options, str)
is_provided_by_formdataprovider = self._form._item and hasattr(self._form._item, "get_options")

if is_option_list:
self.add_options_from_list(options, user_defined_options)
elif is_string_options:
self.add_string_options(options, user_defined_options)
elif is_provided_by_formdataprovider:
self.add_formdata_options(options)
return self.sort_options(options)

def add_formdata_options(self, options):
for option in self._form._item.get_options(self.name):
options.append((option[0], option[1], True))

def add_string_options(self, options, user_defined_options):
for option in self._form.merged_data.get(user_defined_options):
options.append((option[0], option[1], True))

def add_options_from_list(self, options, user_defined_options):
for option in self.filter_options(user_defined_options):
options.append((option[0], option[1], option[2]))

def _from_python(self, value):
value = super(CollectionField, self)._from_python(value)
# Special handling for multiple values (multiselect in
Expand Down
4 changes: 2 additions & 2 deletions formbar/form.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ class ValidationException(Exception):


class FormDataprovider(object):
"""Dummy class which can be used to provided dynamic data to the
"""Dummy class which can be used to provide dynamic data to the
form. It can be provided as item on the form init to provide
dynamically loaded options and values.

As said the dataprovider can be user to provide `options` and `values`.
Both are provided by defining propertys.
Both are provided by defining properties.

1. Value
The function should simply return the pythonic value of the field:
Expand Down