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 ...@@ -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.helpers import get_form_data, validate_form_on_submit, get_redirect_target
from flask.ext.admin.tools import rec_getattr from flask.ext.admin.tools import rec_getattr
from flask.ext.admin._backwards import ObsoleteAttr 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 .helpers import prettify_name, get_mdict_item_or_list
from .ajax import AjaxModelLoader from .ajax import AjaxModelLoader
...@@ -594,7 +594,7 @@ class BaseModelView(BaseView, ActionsMixin): ...@@ -594,7 +594,7 @@ class BaseModelView(BaseView, ActionsMixin):
self._filter_groups[flt.name].append({ self._filter_groups[flt.name].append({
'index': i, 'index': i,
'arg': self.get_filter_arg(i, flt), 'arg': self.get_filter_arg(i, flt),
'operation': flt.operation(), 'operation': as_unicode(flt.operation()),
'options': flt.get_options(self) or None, 'options': flt.get_options(self) or None,
'type': flt.data_type 'type': flt.data_type
}) })
...@@ -809,7 +809,7 @@ class BaseModelView(BaseView, ActionsMixin): ...@@ -809,7 +809,7 @@ class BaseModelView(BaseView, ActionsMixin):
Filter instance Filter instance
""" """
if self.named_filter_urls: 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_char_re.sub('', name)
name = filter_compact_re.sub('_', name) name = filter_compact_re.sub('_', name)
return name return name
...@@ -945,7 +945,7 @@ class BaseModelView(BaseView, ActionsMixin): ...@@ -945,7 +945,7 @@ class BaseModelView(BaseView, ActionsMixin):
# Exception handler # Exception handler
def handle_view_exception(self, exc): def handle_view_exception(self, exc):
if isinstance(exc, ValidationError): if isinstance(exc, ValidationError):
flash(unicode(exc)) flash(as_unicode(exc))
return True return True
if self._debug: if self._debug:
......
...@@ -6,6 +6,7 @@ from flask.ext.admin import form ...@@ -6,6 +6,7 @@ from flask.ext.admin import form
from flask.ext.admin._compat import as_unicode from flask.ext.admin._compat import as_unicode
from flask.ext.admin._compat import iteritems from flask.ext.admin._compat import iteritems
from flask.ext.admin.contrib.sqla import ModelView from flask.ext.admin.contrib.sqla import ModelView
from flask.ext.babelex import Babel
from . import setup from . import setup
...@@ -934,8 +935,34 @@ def test_extra_field_order(): ...@@ -934,8 +935,34 @@ def test_extra_field_order():
pos2 = data.find('Test1') pos2 = data.find('Test1')
ok_(pos2 > pos1) ok_(pos2 > pos1)
def test_modelview_localization():
# TODO: Babel tests 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(): def test_custom_form_base():
app, db, admin = setup() app, db, admin = setup()
......
...@@ -55,7 +55,8 @@ setup( ...@@ -55,7 +55,8 @@ setup(
'wtf-peewee', 'wtf-peewee',
'sqlalchemy', 'sqlalchemy',
'flask-mongoengine', 'flask-mongoengine',
'flask-sqlalchemy' 'flask-sqlalchemy',
'flask-babelex'
], ],
classifiers=[ classifiers=[
'Development Status :: 4 - Beta', 'Development Status :: 4 - Beta',
......
...@@ -5,3 +5,4 @@ peewee ...@@ -5,3 +5,4 @@ peewee
wtf-peewee wtf-peewee
flask-mongoengine flask-mongoengine
pillow pillow
flask-babelex
\ No newline at end of file
...@@ -5,3 +5,4 @@ peewee ...@@ -5,3 +5,4 @@ peewee
wtf-peewee wtf-peewee
flask-mongoengine flask-mongoengine
pillow 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