Commit 459e79e8 authored by Serge S. Koval's avatar Serge S. Koval

Merge pull request #707 from pawl/localization_tests

add basic tests for modelview localization, fix issue #692
parents e5c75f7a e76fb0a3
......@@ -14,7 +14,7 @@ from flask.ext.admin.actions import ActionsMixin
from flask.ext.admin.helpers import get_form_data, validate_form_on_submit, get_redirect_target
from flask.ext.admin.tools import rec_getattr
from flask.ext.admin._backwards import ObsoleteAttr
from flask.ext.admin._compat import iteritems, OrderedDict
from flask.ext.admin._compat import iteritems, OrderedDict, as_unicode
from .helpers import prettify_name, get_mdict_item_or_list
from .ajax import AjaxModelLoader
......@@ -594,7 +594,7 @@ class BaseModelView(BaseView, ActionsMixin):
self._filter_groups[flt.name].append({
'index': i,
'arg': self.get_filter_arg(i, flt),
'operation': flt.operation(),
'operation': as_unicode(flt.operation()),
'options': flt.get_options(self) or None,
'type': flt.data_type
})
......@@ -809,7 +809,7 @@ class BaseModelView(BaseView, ActionsMixin):
Filter instance
"""
if self.named_filter_urls:
name = ('%s %s' % (flt.name, flt.operation())).lower()
name = ('%s %s' % (flt.name, as_unicode(flt.operation()))).lower()
name = filter_char_re.sub('', name)
name = filter_compact_re.sub('_', name)
return name
......@@ -945,7 +945,7 @@ class BaseModelView(BaseView, ActionsMixin):
# Exception handler
def handle_view_exception(self, exc):
if isinstance(exc, ValidationError):
flash(unicode(exc))
flash(as_unicode(exc))
return True
if self._debug:
......
......@@ -6,6 +6,7 @@ from flask.ext.admin import form
from flask.ext.admin._compat import as_unicode
from flask.ext.admin._compat import iteritems
from flask.ext.admin.contrib.sqla import ModelView
from flask.ext.babelex import Babel
from . import setup
......@@ -934,8 +935,34 @@ def test_extra_field_order():
pos2 = data.find('Test1')
ok_(pos2 > pos1)
# TODO: Babel tests
def test_modelview_localization():
def test_locale(locale):
app, db, admin = setup()
app.config['BABEL_DEFAULT_LOCALE'] = locale
babel = Babel(app)
Model1, _ = create_models(db)
view = CustomModelView(
Model1, db.session,
column_filters=['test1', 'bool_field', 'date_field', 'datetime_field', 'time_field']
)
admin.add_view(view)
client = app.test_client()
rv = client.get('/admin/model1/')
eq_(rv.status_code, 200)
rv = client.get('/admin/model1/new/')
eq_(rv.status_code, 200)
locales = ['en', 'cs', 'de', 'es', 'fa', 'fr', 'pt', 'ru', 'zh_CN', 'zh_TW']
for locale in locales:
test_locale(locale)
def test_custom_form_base():
app, db, admin = setup()
......
......@@ -55,7 +55,8 @@ setup(
'wtf-peewee',
'sqlalchemy',
'flask-mongoengine',
'flask-sqlalchemy'
'flask-sqlalchemy',
'flask-babelex'
],
classifiers=[
'Development Status :: 4 - Beta',
......
......@@ -5,3 +5,4 @@ peewee
wtf-peewee
flask-mongoengine
pillow
flask-babelex
\ No newline at end of file
......@@ -5,3 +5,4 @@ peewee
wtf-peewee
flask-mongoengine
pillow
flask-babelex
\ No newline at end of file
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