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, ...@@ -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.tools import rec_getattr
from flask_admin._backwards import ObsoleteAttr from flask_admin._backwards import ObsoleteAttr
from flask_admin._compat import (iteritems, itervalues, OrderedDict, 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 .helpers import prettify_name, get_mdict_item_or_list
from .ajax import AjaxModelLoader from .ajax import AjaxModelLoader
from .fields import ListEditableFieldList from .fields import ListEditableFieldList
...@@ -78,6 +78,10 @@ class FilterGroup(object): ...@@ -78,6 +78,10 @@ class FilterGroup(object):
for item in self.filters: for item in self.filters:
copy = dict(item) copy = dict(item)
copy['operation'] = as_unicode(copy['operation']) 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) filters.append(copy)
return as_unicode(self.label), filters return as_unicode(self.label), filters
...@@ -735,7 +739,6 @@ class BaseModelView(BaseView, ActionsMixin): ...@@ -735,7 +739,6 @@ class BaseModelView(BaseView, ActionsMixin):
key = as_unicode(flt.name) key = as_unicode(flt.name)
if key not in self._filter_groups: if key not in self._filter_groups:
self._filter_groups[key] = FilterGroup(flt.name) self._filter_groups[key] = FilterGroup(flt.name)
self._filter_groups[key].append({ self._filter_groups[key].append({
'index': i, 'index': i,
'arg': self.get_filter_arg(i, flt), 'arg': self.get_filter_arg(i, flt),
......
import time import time
import datetime import datetime
from flask_admin._compat import text_type
from flask_admin.babel import lazy_gettext from flask_admin.babel import lazy_gettext
...@@ -39,7 +38,7 @@ class BaseFilter(object): ...@@ -39,7 +38,7 @@ class BaseFilter(object):
if callable(options): if callable(options):
options = options() options = options()
return [(v, text_type(n)) for v, n in options] return options
return None return None
......
...@@ -326,14 +326,14 @@ def test_column_filters(): ...@@ -326,14 +326,14 @@ def test_column_filters():
def test_filter_list_callable(): def test_filter_list_callable():
app, admin = setup() 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]) view = MockModelView(Model, column_filters=[flt])
admin.add_view(view) admin.add_view(view)
opts = flt.get_options(view) opts = flt.get_options(view)
eq_(len(opts), 2) 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(): 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