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
e5756416
Commit
e5756416
authored
Jan 20, 2013
by
Artem Serga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#4 - Add test to filters by related model's field
parent
6e8226a4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
17 deletions
+67
-17
test_basic.py
flask_admin/tests/sqlamodel/test_basic.py
+67
-17
No files found.
flask_admin/tests/sqlamodel/test_basic.py
View file @
e5756416
...
...
@@ -20,22 +20,33 @@ class CustomModelView(ModelView):
def
create_models
(
db
):
class
Model1
(
db
.
Model
):
def
__init__
(
self
,
test1
=
None
,
test2
=
None
,
test3
=
None
,
test4
=
None
):
def
__init__
(
self
,
test1
=
None
,
test2
=
None
,
test3
=
None
,
test4
=
None
,
bool_field
=
False
):
self
.
test1
=
test1
self
.
test2
=
test2
self
.
test3
=
test3
self
.
test4
=
test4
self
.
bool_field
=
bool_field
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
)
test1
=
db
.
Column
(
db
.
String
(
20
))
test2
=
db
.
Column
(
db
.
Unicode
(
20
))
test3
=
db
.
Column
(
db
.
Text
)
test4
=
db
.
Column
(
db
.
UnicodeText
)
bool_field
=
db
.
Column
(
db
.
Boolean
)
class
Model2
(
db
.
Model
):
def
__init__
(
self
,
string_field
=
None
,
int_field
=
None
,
bool_field
=
None
,
model1
=
None
):
self
.
string_field
=
string_field
self
.
int_field
=
int_field
self
.
bool_field
=
bool_field
self
.
model1
=
model1
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
)
string_field
=
db
.
Column
(
db
.
String
)
int_field
=
db
.
Column
(
db
.
Integer
)
bool_field
=
db
.
Column
(
db
.
Boolean
)
model1_id
=
db
.
Column
(
db
.
Integer
,
db
.
ForeignKey
(
Model1
.
id
))
model1
=
db
.
relationship
(
Model1
)
db
.
create_all
()
...
...
@@ -155,7 +166,10 @@ def test_exclude_columns():
column_exclude_list
=
[
'test2'
,
'test4'
])
admin
.
add_view
(
view
)
eq_
(
view
.
_list_columns
,
[(
'test1'
,
'Test1'
),
(
'test3'
,
'Test3'
)])
eq_
(
view
.
_list_columns
,
[(
'test1'
,
'Test1'
),
(
'test3'
,
'Test3'
),
(
'bool_field'
,
'Bool Field'
)]
)
client
=
app
.
test_client
()
...
...
@@ -202,28 +216,43 @@ def test_column_filters():
eq_
(
len
(
view
.
_filters
),
4
)
eq_
(
view
.
_filter_dict
,
{
'Test1'
:
[(
0
,
'equals'
),
(
1
,
'not equal'
),
(
2
,
'contains'
),
(
3
,
'not contains'
)]})
db
.
session
.
add
(
Model1
(
'model1'
))
db
.
session
.
add
(
Model1
(
'model2'
))
db
.
session
.
add
(
Model1
(
'model3'
))
db
.
session
.
add
(
Model1
(
'model4'
))
eq_
(
view
.
_filter_dict
,
{
'Test1'
:
[
(
0
,
'equals'
),
(
1
,
'not equal'
),
(
2
,
'contains'
),
(
3
,
'not contains'
)
],
})
# Fill DB
model1_obj1
=
Model1
(
'model1_obj1'
,
bool_field
=
True
)
model1_obj2
=
Model1
(
'model1_obj2'
)
model1_obj3
=
Model1
(
'model1_obj3'
)
model1_obj4
=
Model1
(
'model1_obj4'
)
model2_obj1
=
Model2
(
'model2_obj1'
,
model1
=
model1_obj1
)
model2_obj2
=
Model2
(
'model2_obj2'
,
model1
=
model1_obj1
)
model2_obj3
=
Model2
(
'model2_obj3'
)
model2_obj4
=
Model2
(
'model2_obj4'
)
db
.
session
.
add_all
([
model1_obj1
,
model1_obj2
,
model1_obj3
,
model1_obj4
,
model2_obj1
,
model2_obj2
,
model2_obj3
,
model2_obj4
,
])
db
.
session
.
commit
()
client
=
app
.
test_client
()
rv
=
client
.
get
(
'/admin/model1view/?flt0_0=model1'
)
rv
=
client
.
get
(
'/admin/model1view/?flt0_0=model1
_obj1
'
)
eq_
(
rv
.
status_code
,
200
)
ok_
(
'model1'
in
rv
.
data
)
ok_
(
'model2'
not
in
rv
.
data
)
ok_
(
'model1
_obj1
'
in
rv
.
data
)
ok_
(
'model
1_obj
2'
not
in
rv
.
data
)
rv
=
client
.
get
(
'/admin/model1view/?flt0_5=model1'
)
rv
=
client
.
get
(
'/admin/model1view/?flt0_5=model1
_obj1
'
)
eq_
(
rv
.
status_code
,
200
)
ok_
(
'model1'
in
rv
.
data
)
ok_
(
'model2'
in
rv
.
data
)
ok_
(
'model1
_obj1
'
in
rv
.
data
)
ok_
(
'model
1_obj
2'
in
rv
.
data
)
# Test different filter types
view
=
CustomModelView
(
Model2
,
db
.
session
,
...
...
@@ -234,6 +263,27 @@ def test_column_filters():
(
2
,
'greater than'
),
(
3
,
'smaller than'
)]})
#Test filters to joined table field
view
=
CustomModelView
(
Model2
,
db
.
session
,
endpoint
=
'_model2'
,
column_filters
=
[
'model1.bool_field'
],
column_list
=
[
'string_field'
,
'model1.id'
,
'model1.bool_field'
,
]
)
admin
.
add_view
(
view
)
rv
=
client
.
get
(
'/admin/_model2/?flt1_0=1'
)
eq_
(
rv
.
status_code
,
200
)
ok_
(
'model2_obj1'
in
rv
.
data
)
ok_
(
'model2_obj2'
in
rv
.
data
)
ok_
(
'model2_obj3'
not
in
rv
.
data
)
ok_
(
'model2_obj4'
not
in
rv
.
data
)
def
test_url_args
():
app
,
db
,
admin
=
setup
()
...
...
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