Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
flask-admin
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Python-Dev
flask-admin
Commits
9ed96cb6
Commit
9ed96cb6
authored
Oct 23, 2015
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #994 from torotil/fix_988
Fix & test for #988: column_filters in not compatible with babel.
parents
cd9304d3
fecd870a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
62 additions
and
12 deletions
+62
-12
base.py
flask_admin/model/base.py
+28
-12
test_translation.py
flask_admin/tests/sqla/test_translation.py
+34
-0
No files found.
flask_admin/model/base.py
View file @
9ed96cb6
...
...
@@ -22,7 +22,8 @@ from flask_admin.helpers import (get_form_data, validate_form_on_submit,
get_redirect_target
,
flash_errors
)
from
flask_admin.tools
import
rec_getattr
from
flask_admin._backwards
import
ObsoleteAttr
from
flask_admin._compat
import
iteritems
,
OrderedDict
,
as_unicode
,
csv_encode
from
flask_admin._compat
import
(
iteritems
,
itervalues
,
OrderedDict
,
as_unicode
,
csv_encode
)
from
.helpers
import
prettify_name
,
get_mdict_item_or_list
from
.ajax
import
AjaxModelLoader
from
.fields
import
ListEditableFieldList
...
...
@@ -64,6 +65,26 @@ class ViewArgs(object):
return
ViewArgs
(
**
kwargs
)
class
FilterGroup
(
object
):
def
__init__
(
self
,
label
):
self
.
label
=
label
self
.
filters
=
[]
def
append
(
self
,
filter
):
self
.
filters
.
append
(
filter
)
def
non_lazy
(
self
):
filters
=
[]
for
item
in
self
.
filters
:
copy
=
dict
(
item
)
copy
[
'operation'
]
=
as_unicode
(
copy
[
'operation'
])
filters
.
append
(
copy
)
return
as_unicode
(
self
.
label
),
filters
def
__iter__
(
self
):
return
iter
(
self
.
filters
)
class
BaseModelView
(
BaseView
,
ActionsMixin
):
"""
Base model view.
...
...
@@ -713,10 +734,11 @@ class BaseModelView(BaseView, ActionsMixin):
self
.
_filter_args
=
{}
for
i
,
flt
in
enumerate
(
self
.
_filters
):
if
flt
.
name
not
in
self
.
_filter_groups
:
self
.
_filter_groups
[
flt
.
name
]
=
[]
key
=
as_unicode
(
flt
.
name
)
if
key
not
in
self
.
_filter_groups
:
self
.
_filter_groups
[
key
]
=
FilterGroup
(
flt
.
name
)
self
.
_filter_groups
[
flt
.
name
]
.
append
({
self
.
_filter_groups
[
key
]
.
append
({
'index'
:
i
,
'arg'
:
self
.
get_filter_arg
(
i
,
flt
),
'operation'
:
flt
.
operation
(),
...
...
@@ -1016,14 +1038,8 @@ class BaseModelView(BaseView, ActionsMixin):
if
self
.
_filter_groups
:
results
=
OrderedDict
()
for
key
,
value
in
iteritems
(
self
.
_filter_groups
):
items
=
[]
for
item
in
value
:
copy
=
dict
(
item
)
copy
[
'operation'
]
=
as_unicode
(
copy
[
'operation'
])
items
.
append
(
copy
)
for
group
in
itervalues
(
self
.
_filter_groups
):
key
,
items
=
group
.
non_lazy
()
results
[
key
]
=
items
return
results
...
...
flask_admin/tests/sqla/test_translation.py
0 → 100644
View file @
9ed96cb6
import
json
from
nose.tools
import
eq_
,
ok_
,
raises
,
assert_true
from
speaklater
import
make_lazy_string
from
.
import
setup
from
.test_basic
import
CustomModelView
,
create_models
class
Translator
:
translate
=
False
def
__call__
(
self
,
string
):
if
self
.
translate
:
return
'Translated: "{0}"'
.
format
(
string
)
else
:
return
string
def
test_column_label_translation
():
app
,
db
,
admin
=
setup
()
Model1
,
_
=
create_models
(
db
)
translated
=
Translator
()
label
=
make_lazy_string
(
translated
,
'Column1'
)
view
=
CustomModelView
(
Model1
,
db
.
session
,
column_list
=
[
'test1'
,
'test3'
],
column_labels
=
dict
(
test1
=
label
),
column_filters
=
(
'test1'
,))
translated
.
translate
=
True
non_lazy_groups
=
view
.
_get_filter_groups
()
json
.
dumps
(
non_lazy_groups
)
# Filter dict is JSON serializable.
ok_
(
translated
(
'Column1'
)
in
non_lazy_groups
)
# Label was translated.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment