Commit 7445f6a4 authored by Serge S. Koval's avatar Serge S. Koval

Merge pull request #1137 from iurisilvio/lazy_eval_options

Fix #1122 filter options translations.
parents 47d965fb 3c879622
......@@ -23,7 +23,7 @@ from flask_admin.helpers import (get_form_data, validate_form_on_submit,
from flask_admin.tools import rec_getattr
from flask_admin._backwards import ObsoleteAttr
from flask_admin._compat import (iteritems, itervalues, OrderedDict,
as_unicode, csv_encode)
as_unicode, csv_encode, text_type)
from .helpers import prettify_name, get_mdict_item_or_list
from .ajax import AjaxModelLoader
from .fields import ListEditableFieldList
......@@ -78,6 +78,10 @@ class FilterGroup(object):
for item in self.filters:
copy = dict(item)
copy['operation'] = as_unicode(copy['operation'])
options = copy['options']
if options:
copy['options'] = [(k, text_type(v)) for k, v in options]
filters.append(copy)
return as_unicode(self.label), filters
......@@ -735,7 +739,6 @@ class BaseModelView(BaseView, ActionsMixin):
key = as_unicode(flt.name)
if key not in self._filter_groups:
self._filter_groups[key] = FilterGroup(flt.name)
self._filter_groups[key].append({
'index': i,
'arg': self.get_filter_arg(i, flt),
......
import time
import datetime
from flask_admin._compat import text_type
from flask_admin.babel import lazy_gettext
......@@ -39,7 +38,7 @@ class BaseFilter(object):
if callable(options):
options = options()
return [(v, text_type(n)) for v, n in options]
return options
return None
......
......@@ -326,14 +326,14 @@ def test_column_filters():
def test_filter_list_callable():
app, admin = setup()
flt = SimpleFilter('test', options=lambda: (('1', 'Test 1'), ('2', 'Test 2')))
flt = SimpleFilter('test', options=lambda: [('1', 'Test 1'), ('2', 'Test 2')])
view = MockModelView(Model, column_filters=[flt])
admin.add_view(view)
opts = flt.get_options(view)
eq_(len(opts), 2)
eq_(opts, [('1', u'Test 1'), ('2', u'Test 2')])
eq_(opts, [('1', 'Test 1'), ('2', 'Test 2')])
def test_form():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment