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
5f8dddf7
Commit
5f8dddf7
authored
Jul 14, 2015
by
Paul Brown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add mongo_engine, peewee, and sqla tests for details view
parent
3f735f52
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
166 additions
and
3 deletions
+166
-3
base.py
flask_admin/model/base.py
+4
-3
test_basic.py
flask_admin/tests/mongoengine/test_basic.py
+57
-0
test_basic.py
flask_admin/tests/peeweemodel/test_basic.py
+53
-0
test_basic.py
flask_admin/tests/sqla/test_basic.py
+52
-0
No files found.
flask_admin/model/base.py
View file @
5f8dddf7
...
@@ -157,7 +157,7 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -157,7 +157,7 @@ class BaseModelView(BaseView, ActionsMixin):
If set to `None`, will get them from the model.
If set to `None`, will get them from the model.
"""
"""
details_exclude_list
=
None
column_
details_exclude_list
=
None
"""
"""
Collection of fields excluded from the details view.
Collection of fields excluded from the details view.
"""
"""
...
@@ -804,8 +804,9 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -804,8 +804,9 @@ class BaseModelView(BaseView, ActionsMixin):
columns
=
self
.
scaffold_list_columns
()
columns
=
self
.
scaffold_list_columns
()
# Filter excluded columns
# Filter excluded columns
if
self
.
details_exclude_list
:
if
self
.
column_details_exclude_list
:
columns
=
[
c
for
c
in
columns
if
c
not
in
self
.
details_exclude_list
]
columns
=
[
c
for
c
in
columns
if
c
not
in
self
.
column_details_exclude_list
]
return
[(
c
,
self
.
get_column_name
(
c
))
for
c
in
columns
]
return
[(
c
,
self
.
get_column_name
(
c
))
for
c
in
columns
]
...
...
flask_admin/tests/mongoengine/test_basic.py
View file @
5f8dddf7
...
@@ -214,6 +214,63 @@ def test_column_editable_list():
...
@@ -214,6 +214,63 @@ def test_column_editable_list():
ok_
(
'test1_val_1'
in
data
)
ok_
(
'test1_val_1'
in
data
)
def
test_details_view
():
app
,
db
,
admin
=
setup
()
Model1
,
Model2
=
create_models
(
db
)
view_no_details
=
CustomModelView
(
Model1
)
admin
.
add_view
(
view_no_details
)
# fields are scaffolded
view_w_details
=
CustomModelView
(
Model2
,
can_view_details
=
True
)
admin
.
add_view
(
view_w_details
)
# show only specific fields in details w/ column_details_list
string_field_view
=
CustomModelView
(
Model2
,
can_view_details
=
True
,
column_details_list
=
[
"string_field"
],
endpoint
=
"sf_view"
)
admin
.
add_view
(
string_field_view
)
fill_db
(
Model1
,
Model2
)
client
=
app
.
test_client
()
m1_id
=
Model1
.
objects
.
first
()
.
id
m2_id
=
Model2
.
objects
.
first
()
.
id
# ensure link to details is hidden when can_view_details is disabled
rv
=
client
.
get
(
'/admin/model1/'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'/admin/model1/details/'
not
in
data
)
# ensure link to details view appears
rv
=
client
.
get
(
'/admin/model2/'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'/admin/model2/details/'
in
data
)
# test redirection when details are disabled
url
=
'/admin/model1/details/?url=
%2
Fadmin
%2
Fmodel1
%2
F&id='
+
str
(
m1_id
)
rv
=
client
.
get
(
url
)
eq_
(
rv
.
status_code
,
302
)
# test if correct data appears in details view when enabled
url
=
'/admin/model2/details/?url=
%2
Fadmin
%2
Fmodel2
%2
F&id='
+
str
(
m2_id
)
rv
=
client
.
get
(
url
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'String Field'
in
data
)
ok_
(
'string_field_val_1'
in
data
)
ok_
(
'Int Field'
in
data
)
# test column_details_list
url
=
'/admin/sf_view/details/?url=
%2
Fadmin
%2
Fsf_view
%2
F&id='
+
str
(
m2_id
)
rv
=
client
.
get
(
url
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'String Field'
in
data
)
ok_
(
'string_field_val_1'
in
data
)
ok_
(
'Int Field'
not
in
data
)
def
test_column_filters
():
def
test_column_filters
():
app
,
db
,
admin
=
setup
()
app
,
db
,
admin
=
setup
()
...
...
flask_admin/tests/peeweemodel/test_basic.py
View file @
5f8dddf7
...
@@ -249,6 +249,59 @@ def test_column_editable_list():
...
@@ -249,6 +249,59 @@ def test_column_editable_list():
ok_
(
'test1_val_3'
in
data
)
ok_
(
'test1_val_3'
in
data
)
def
test_details_view
():
app
,
db
,
admin
=
setup
()
Model1
,
Model2
=
create_models
(
db
)
view_no_details
=
CustomModelView
(
Model1
)
admin
.
add_view
(
view_no_details
)
# fields are scaffolded
view_w_details
=
CustomModelView
(
Model2
,
can_view_details
=
True
)
admin
.
add_view
(
view_w_details
)
# show only specific fields in details w/ column_details_list
char_field_view
=
CustomModelView
(
Model2
,
can_view_details
=
True
,
column_details_list
=
[
"char_field"
],
endpoint
=
"cf_view"
)
admin
.
add_view
(
char_field_view
)
fill_db
(
Model1
,
Model2
)
client
=
app
.
test_client
()
# ensure link to details is hidden when can_view_details is disabled
rv
=
client
.
get
(
'/admin/model1/'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'/admin/model1/details/'
not
in
data
)
# ensure link to details view appears
rv
=
client
.
get
(
'/admin/model2/'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'/admin/model2/details/'
in
data
)
# test redirection when details are disabled
rv
=
client
.
get
(
'/admin/model1/details/?url=
%2
Fadmin
%2
Fmodel1
%2
F&id=3'
)
eq_
(
rv
.
status_code
,
302
)
# test if correct data appears in details view when enabled
rv
=
client
.
get
(
'/admin/model2/details/?url=
%2
Fadmin
%2
Fmodel2
%2
F&id=3'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'Char Field'
in
data
)
ok_
(
'char_field_val_3'
in
data
)
ok_
(
'Int Field'
in
data
)
ok_
(
'5000'
in
data
)
# test column_details_list
rv
=
client
.
get
(
'/admin/cf_view/details/?url=
%2
Fadmin
%2
Fcf_view
%2
F&id=3'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'Char Field'
in
data
)
ok_
(
'char_field_val_3'
in
data
)
ok_
(
'Int Field'
not
in
data
)
ok_
(
'5000'
not
in
data
)
def
test_column_filters
():
def
test_column_filters
():
app
,
db
,
admin
=
setup
()
app
,
db
,
admin
=
setup
()
...
...
flask_admin/tests/sqla/test_basic.py
View file @
5f8dddf7
...
@@ -408,6 +408,58 @@ def test_column_editable_list():
...
@@ -408,6 +408,58 @@ def test_column_editable_list():
ok_
(
'test1_val_3'
in
data
)
ok_
(
'test1_val_3'
in
data
)
def
test_details_view
():
app
,
db
,
admin
=
setup
()
Model1
,
Model2
=
create_models
(
db
)
view_no_details
=
CustomModelView
(
Model1
,
db
.
session
)
admin
.
add_view
(
view_no_details
)
# fields are scaffolded
view_w_details
=
CustomModelView
(
Model2
,
db
.
session
,
can_view_details
=
True
)
admin
.
add_view
(
view_w_details
)
# show only specific fields in details w/ column_details_list
string_field_view
=
CustomModelView
(
Model2
,
db
.
session
,
can_view_details
=
True
,
column_details_list
=
[
"string_field"
],
endpoint
=
"sf_view"
)
admin
.
add_view
(
string_field_view
)
fill_db
(
db
,
Model1
,
Model2
)
client
=
app
.
test_client
()
# ensure link to details is hidden when can_view_details is disabled
rv
=
client
.
get
(
'/admin/model1/'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'/admin/model1/details/'
not
in
data
)
# ensure link to details view appears
rv
=
client
.
get
(
'/admin/model2/'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'/admin/model2/details/'
in
data
)
# test redirection when details are disabled
rv
=
client
.
get
(
'/admin/model1/details/?url=
%2
Fadmin
%2
Fmodel1
%2
F&id=1'
)
eq_
(
rv
.
status_code
,
302
)
# test if correct data appears in details view when enabled
rv
=
client
.
get
(
'/admin/model2/details/?url=
%2
Fadmin
%2
Fmodel2
%2
F&id=1'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'String Field'
in
data
)
ok_
(
'test2_val_1'
in
data
)
ok_
(
'test1_val_1'
in
data
)
# test column_details_list
rv
=
client
.
get
(
'/admin/sf_view/details/?url=
%2
Fadmin
%2
Fsf_view
%2
F&id=1'
)
data
=
rv
.
data
.
decode
(
'utf-8'
)
ok_
(
'String Field'
in
data
)
ok_
(
'test2_val_1'
in
data
)
ok_
(
'test1_val_1'
not
in
data
)
def
test_editable_list_special_pks
():
def
test_editable_list_special_pks
():
''' Tests editable list view + a primary key with special characters
''' Tests editable list view + a primary key with special characters
'''
'''
...
...
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