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
f9583efc
Commit
f9583efc
authored
Aug 29, 2015
by
Serge S. Koval
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1031 from pawl/fix_peewee_boolean_filter
Fix boolean filters in peewee
parents
b2bffa3b
4fc18040
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
138 additions
and
7 deletions
+138
-7
filters.py
flask_admin/contrib/peewee/filters.py
+4
-2
test_basic.py
flask_admin/tests/mongoengine/test_basic.py
+45
-2
test_basic.py
flask_admin/tests/peeweemodel/test_basic.py
+45
-2
test_basic.py
flask_admin/tests/sqla/test_basic.py
+44
-1
No files found.
flask_admin/contrib/peewee/filters.py
View file @
f9583efc
...
@@ -116,11 +116,13 @@ class FilterNotInList(FilterInList):
...
@@ -116,11 +116,13 @@ class FilterNotInList(FilterInList):
# Customized type filters
# Customized type filters
class
BooleanEqualFilter
(
FilterEqual
,
filters
.
BaseBooleanFilter
):
class
BooleanEqualFilter
(
FilterEqual
,
filters
.
BaseBooleanFilter
):
pass
def
clean
(
self
,
value
):
return
int
(
value
)
class
BooleanNotEqualFilter
(
FilterNotEqual
,
filters
.
BaseBooleanFilter
):
class
BooleanNotEqualFilter
(
FilterNotEqual
,
filters
.
BaseBooleanFilter
):
pass
def
clean
(
self
,
value
):
return
int
(
value
)
class
IntEqualFilter
(
FilterEqual
,
filters
.
BaseIntFilter
):
class
IntEqualFilter
(
FilterEqual
,
filters
.
BaseIntFilter
):
...
...
flask_admin/tests/mongoengine/test_basic.py
View file @
f9583efc
...
@@ -59,8 +59,8 @@ def fill_db(Model1, Model2):
...
@@ -59,8 +59,8 @@ def fill_db(Model1, Model2):
Model1
(
'test1_val_4'
,
'test2_val_4'
)
.
save
()
Model1
(
'test1_val_4'
,
'test2_val_4'
)
.
save
()
Model1
(
None
,
'empty_obj'
)
.
save
()
Model1
(
None
,
'empty_obj'
)
.
save
()
Model2
(
'string_field_val_1'
,
None
,
None
)
.
save
()
Model2
(
'string_field_val_1'
,
None
,
None
,
True
)
.
save
()
Model2
(
'string_field_val_2'
,
None
,
None
)
.
save
()
Model2
(
'string_field_val_2'
,
None
,
None
,
False
)
.
save
()
Model2
(
'string_field_val_3'
,
5000
,
25.9
)
.
save
()
Model2
(
'string_field_val_3'
,
5000
,
25.9
)
.
save
()
Model2
(
'string_field_val_4'
,
9000
,
75.5
)
.
save
()
Model2
(
'string_field_val_4'
,
9000
,
75.5
)
.
save
()
Model2
(
'string_field_val_5'
,
6169453081680413441
)
.
save
()
Model2
(
'string_field_val_5'
,
6169453081680413441
)
.
save
()
...
@@ -466,6 +466,49 @@ def test_column_filters():
...
@@ -466,6 +466,49 @@ def test_column_filters():
ok_
(
'string_field_val_3'
not
in
data
)
ok_
(
'string_field_val_3'
not
in
data
)
ok_
(
'string_field_val_4'
not
in
data
)
ok_
(
'string_field_val_4'
not
in
data
)
# Test boolean filter
view
=
CustomModelView
(
Model2
,
column_filters
=
[
'bool_field'
],
endpoint
=
"_bools"
)
admin
.
add_view
(
view
)
eq_
([(
f
[
'index'
],
f
[
'operation'
])
for
f
in
view
.
_filter_groups
[
u'Bool Field'
]],
[
(
0
,
'equals'
),
(
1
,
'not equal'
),
])
# boolean - equals - Yes
rv
=
client
.
get
(
'/admin/_bools/?flt0_0=1'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'string_field_val_1'
in
data
)
ok_
(
'string_field_val_2'
not
in
data
)
#ok_('string_field_val_3' not in data)
# boolean - equals - No
rv
=
client
.
get
(
'/admin/_bools/?flt0_0=0'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'string_field_val_1'
not
in
data
)
ok_
(
'string_field_val_2'
in
data
)
#ok_('string_field_val_3' in data)
# boolean - not equals - Yes
rv
=
client
.
get
(
'/admin/_bools/?flt0_1=1'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'string_field_val_1'
not
in
data
)
ok_
(
'string_field_val_2'
in
data
)
#ok_('string_field_val_3' in data)
# boolean - not equals - No
rv
=
client
.
get
(
'/admin/_bools/?flt0_1=0'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'string_field_val_1'
in
data
)
ok_
(
'string_field_val_2'
not
in
data
)
#ok_('string_field_val_3' not in data)
# Test float filter
# Test float filter
view
=
CustomModelView
(
Model2
,
column_filters
=
[
'float_field'
],
view
=
CustomModelView
(
Model2
,
column_filters
=
[
'float_field'
],
endpoint
=
"_float"
)
endpoint
=
"_float"
)
...
...
flask_admin/tests/peeweemodel/test_basic.py
View file @
f9583efc
...
@@ -94,8 +94,8 @@ def fill_db(Model1, Model2):
...
@@ -94,8 +94,8 @@ def fill_db(Model1, Model2):
Model1
(
'test1_val_4'
,
'test2_val_4'
)
.
save
()
Model1
(
'test1_val_4'
,
'test2_val_4'
)
.
save
()
Model1
(
None
,
'empty_obj'
)
.
save
()
Model1
(
None
,
'empty_obj'
)
.
save
()
Model2
(
'char_field_val_1'
,
None
,
None
)
.
save
()
Model2
(
'char_field_val_1'
,
None
,
None
,
bool_field
=
True
)
.
save
()
Model2
(
'char_field_val_2'
,
None
,
None
)
.
save
()
Model2
(
'char_field_val_2'
,
None
,
None
,
bool_field
=
False
)
.
save
()
Model2
(
'char_field_val_3'
,
5000
,
25.9
)
.
save
()
Model2
(
'char_field_val_3'
,
5000
,
25.9
)
.
save
()
Model2
(
'char_field_val_4'
,
9000
,
75.5
)
.
save
()
Model2
(
'char_field_val_4'
,
9000
,
75.5
)
.
save
()
Model2
(
'char_field_val_5'
,
6169453081680413441
)
.
save
()
Model2
(
'char_field_val_5'
,
6169453081680413441
)
.
save
()
...
@@ -496,6 +496,49 @@ def test_column_filters():
...
@@ -496,6 +496,49 @@ def test_column_filters():
ok_
(
'char_field_val_3'
not
in
data
)
ok_
(
'char_field_val_3'
not
in
data
)
ok_
(
'char_field_val_4'
not
in
data
)
ok_
(
'char_field_val_4'
not
in
data
)
# Test boolean filter
view
=
CustomModelView
(
Model2
,
column_filters
=
[
'bool_field'
],
endpoint
=
"_bools"
)
admin
.
add_view
(
view
)
eq_
([(
f
[
'index'
],
f
[
'operation'
])
for
f
in
view
.
_filter_groups
[
u'Bool Field'
]],
[
(
0
,
'equals'
),
(
1
,
'not equal'
),
])
# boolean - equals - Yes
rv
=
client
.
get
(
'/admin/_bools/?flt0_0=1'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'char_field_val_1'
in
data
)
ok_
(
'char_field_val_2'
not
in
data
)
ok_
(
'char_field_val_3'
not
in
data
)
# boolean - equals - No
rv
=
client
.
get
(
'/admin/_bools/?flt0_0=0'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'char_field_val_1'
not
in
data
)
ok_
(
'char_field_val_2'
in
data
)
ok_
(
'char_field_val_3'
in
data
)
# boolean - not equals - Yes
rv
=
client
.
get
(
'/admin/_bools/?flt0_1=1'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'char_field_val_1'
not
in
data
)
ok_
(
'char_field_val_2'
in
data
)
ok_
(
'char_field_val_3'
in
data
)
# boolean - not equals - No
rv
=
client
.
get
(
'/admin/_bools/?flt0_1=0'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'char_field_val_1'
in
data
)
ok_
(
'char_field_val_2'
not
in
data
)
ok_
(
'char_field_val_3'
not
in
data
)
# Test float filter
# Test float filter
view
=
CustomModelView
(
Model2
,
column_filters
=
[
'float_field'
],
view
=
CustomModelView
(
Model2
,
column_filters
=
[
'float_field'
],
endpoint
=
"_float"
)
endpoint
=
"_float"
)
...
...
flask_admin/tests/sqla/test_basic.py
View file @
f9583efc
...
@@ -93,7 +93,7 @@ def create_models(db):
...
@@ -93,7 +93,7 @@ def create_models(db):
def
fill_db
(
db
,
Model1
,
Model2
):
def
fill_db
(
db
,
Model1
,
Model2
):
model1_obj1
=
Model1
(
'test1_val_1'
,
'test2_val_1'
,
bool_field
=
True
)
model1_obj1
=
Model1
(
'test1_val_1'
,
'test2_val_1'
,
bool_field
=
True
)
model1_obj2
=
Model1
(
'test1_val_2'
,
'test2_val_2'
)
model1_obj2
=
Model1
(
'test1_val_2'
,
'test2_val_2'
,
bool_field
=
False
)
model1_obj3
=
Model1
(
'test1_val_3'
,
'test2_val_3'
)
model1_obj3
=
Model1
(
'test1_val_3'
,
'test2_val_3'
)
model1_obj4
=
Model1
(
'test1_val_4'
,
'test2_val_4'
)
model1_obj4
=
Model1
(
'test1_val_4'
,
'test2_val_4'
)
...
@@ -819,6 +819,49 @@ def test_column_filters():
...
@@ -819,6 +819,49 @@ def test_column_filters():
ok_
(
'test2_val_3'
not
in
data
)
ok_
(
'test2_val_3'
not
in
data
)
ok_
(
'test2_val_4'
not
in
data
)
ok_
(
'test2_val_4'
not
in
data
)
# Test boolean filter
view
=
CustomModelView
(
Model1
,
db
.
session
,
column_filters
=
[
'bool_field'
],
endpoint
=
"_bools"
)
admin
.
add_view
(
view
)
eq_
([(
f
[
'index'
],
f
[
'operation'
])
for
f
in
view
.
_filter_groups
[
u'Bool Field'
]],
[
(
0
,
'equals'
),
(
1
,
'not equal'
),
])
# boolean - equals - Yes
rv
=
client
.
get
(
'/admin/_bools/?flt0_0=1'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'test2_val_1'
in
data
)
ok_
(
'test2_val_2'
not
in
data
)
ok_
(
'test2_val_3'
not
in
data
)
# boolean - equals - No
rv
=
client
.
get
(
'/admin/_bools/?flt0_0=0'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'test2_val_1'
not
in
data
)
ok_
(
'test2_val_2'
in
data
)
ok_
(
'test2_val_3'
in
data
)
# boolean - not equals - Yes
rv
=
client
.
get
(
'/admin/_bools/?flt0_1=1'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'test2_val_1'
not
in
data
)
ok_
(
'test2_val_2'
in
data
)
ok_
(
'test2_val_3'
in
data
)
# boolean - not equals - No
rv
=
client
.
get
(
'/admin/_bools/?flt0_1=0'
)
eq_
(
rv
.
status_code
,
200
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'test2_val_1'
in
data
)
ok_
(
'test2_val_2'
not
in
data
)
ok_
(
'test2_val_3'
not
in
data
)
# Test float filter
# Test float filter
view
=
CustomModelView
(
Model2
,
db
.
session
,
column_filters
=
[
'float_field'
],
view
=
CustomModelView
(
Model2
,
db
.
session
,
column_filters
=
[
'float_field'
],
endpoint
=
"_float"
)
endpoint
=
"_float"
)
...
...
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