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
c9db0ffb
Commit
c9db0ffb
authored
Apr 23, 2016
by
Paul Brown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix sqla column name formatting errors
parent
cbb6acc5
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
73 additions
and
73 deletions
+73
-73
view.py
flask_admin/contrib/sqla/view.py
+26
-27
base.py
flask_admin/model/base.py
+47
-46
No files found.
flask_admin/contrib/sqla/view.py
View file @
c9db0ffb
...
@@ -494,43 +494,42 @@ class ModelView(BaseModelView):
...
@@ -494,43 +494,42 @@ class ModelView(BaseModelView):
return
result
return
result
def
get_
list_columns
(
self
):
def
get_
column_names
(
self
,
only_columns
,
excluded_columns
):
"""
"""
Returns a list of tuples with the model field name and formatted
Returns a list of tuples with the model field name and formatted
field name. If `column_list` was set, returns it. Otherwise calls
field name.
`scaffold_list_columns` to generate the list from the model.
"""
if
self
.
column_list
is
None
:
columns
=
self
.
scaffold_list_columns
()
# Filter excluded columns
Overridden to handle special columns like InstrumentedAttribute.
if
self
.
column_exclude_list
:
columns
=
[
c
for
c
in
columns
if
c
not
in
self
.
column_exclude_list
]
return
[(
c
,
self
.
get_column_name
(
c
))
for
c
in
columns
]
:param only_columns:
else
:
List of columns to include in the results. If not set,
columns
=
[]
`scaffold_list_columns` will generate the list from the model.
:param excluded_columns:
List of columns to exclude from the results.
"""
if
excluded_columns
:
only_columns
=
[
c
for
c
in
only_columns
if
c
not
in
excluded_columns
]
for
c
in
self
.
column_list
:
formatted_columns
=
[]
column
,
path
=
tools
.
get_field_with_path
(
self
.
model
,
c
)
for
c
in
only_columns
:
column
,
path
=
tools
.
get_field_with_path
(
self
.
model
,
c
)
if
path
:
if
path
:
# column is in another table, use full path
# column is a relation (InstrumentedAttribute), use full path
column_name
=
text_type
(
c
)
column_name
=
text_type
(
c
)
else
:
# column is in same table, use only model attribute name
if
getattr
(
column
,
'key'
,
None
)
is
not
None
:
column_name
=
column
.
key
else
:
else
:
# column is in same table, use only model attribute name
column_name
=
text_type
(
c
)
if
getattr
(
column
,
'key'
,
None
)
is
not
None
:
column_name
=
column
.
key
else
:
column_name
=
text_type
(
c
)
visible_name
=
self
.
get_column_name
(
column_name
)
visible_name
=
self
.
get_column_name
(
column_name
)
# column_name must match column_name in `get_sortable_columns`
# column_name must match column_name in `get_sortable_columns`
columns
.
append
((
column_name
,
visible_name
))
formatted_
columns
.
append
((
column_name
,
visible_name
))
return
columns
return
formatted_
columns
def
init_search
(
self
):
def
init_search
(
self
):
"""
"""
...
...
flask_admin/model/base.py
View file @
c9db0ffb
...
@@ -929,23 +929,6 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -929,23 +929,6 @@ class BaseModelView(BaseView, ActionsMixin):
else
:
else
:
return
self
.
_prettify_name
(
field
)
return
self
.
_prettify_name
(
field
)
def
get_list_columns
(
self
):
"""
Returns a list of tuples with the model field name and formatted
field name. If `column_list` was set, returns it. Otherwise calls
`scaffold_list_columns` to generate the list from the model.
"""
columns
=
self
.
column_list
if
columns
is
None
:
columns
=
self
.
scaffold_list_columns
()
# Filter excluded columns
if
self
.
column_exclude_list
:
columns
=
[
c
for
c
in
columns
if
c
not
in
self
.
column_exclude_list
]
return
[(
c
,
self
.
get_column_name
(
c
))
for
c
in
columns
]
def
get_list_row_actions
(
self
):
def
get_list_row_actions
(
self
):
"""
"""
Return list of row action objects, each is instance of :class:`~flask_admin.model.template.BaseListRowAction`
Return list of row action objects, each is instance of :class:`~flask_admin.model.template.BaseListRowAction`
...
@@ -969,45 +952,63 @@ class BaseModelView(BaseView, ActionsMixin):
...
@@ -969,45 +952,63 @@ class BaseModelView(BaseView, ActionsMixin):
return
actions
+
(
self
.
column_extra_row_actions
or
[])
return
actions
+
(
self
.
column_extra_row_actions
or
[])
def
get_
details_columns
(
self
):
def
get_
column_names
(
self
,
only_columns
,
excluded_columns
):
"""
"""
Returns a list of the model field names in the details view. If
Returns a list of tuples with the model field name and formatted
`column_details_list` was set, returns it. Otherwise calls
field name.
`scaffold_list_columns` to generate the list from the model.
:param only_columns:
List of columns to include in the results. If not set,
`scaffold_list_columns` will generate the list from the model.
:param excluded_columns:
List of columns to exclude from the results if `only_columns`
is not set.
"""
"""
columns
=
self
.
column_details_list
if
excluded_columns
:
only_columns
=
[
c
for
c
in
only_columns
if
c
not
in
excluded_columns
]
if
columns
is
None
:
return
[(
c
,
self
.
get_column_name
(
c
))
for
c
in
only_columns
]
columns
=
self
.
scaffold_list_columns
()
# Filter excluded columns
def
get_list_columns
(
self
):
if
self
.
column_details_exclude_list
:
"""
columns
=
[
c
for
c
in
columns
Uses `get_column_names` to get a list of tuples with the model
if
c
not
in
self
.
column_details_exclude_list
]
field name and formatted name for the columns in `column_list`
and not in `column_exclude_list`. If `column_list` is not set,
the columns from `scaffold_list_columns` will be used.
"""
return
self
.
get_column_names
(
only_columns
=
self
.
column_list
or
self
.
scaffold_list_columns
(),
excluded_columns
=
self
.
column_exclude_list
,
)
return
[(
c
,
self
.
get_column_name
(
c
))
for
c
in
columns
]
def
get_details_columns
(
self
):
"""
Uses `get_column_names` to get a list of tuples with the model
field name and formatted name for the columns in `column_details_list`
and not in `column_details_exclude_list`. If `column_details_list`
is not set, the columns from `scaffold_list_columns` will be used.
"""
only_columns
=
self
.
column_details_list
or
self
.
scaffold_list_columns
()
return
self
.
get_column_names
(
only_columns
=
only_columns
,
excluded_columns
=
self
.
column_details_exclude_list
,
)
def
get_export_columns
(
self
):
def
get_export_columns
(
self
):
"""
"""
Returns a list of the model field names in the export view. If
Uses `get_column_names` to get a list of tuples with the model
`column_export_list` was set, returns it. Otherwise, if
field name and formatted name for the columns in `column_export_list`
`column_list` was set, returns it. Otherwise calls
and not in `column_export_exclude_list`. If `column_export_list` is
`scaffold_list_columns` to generate the list from the model.
not set, it will attempt to use the columns from `column_list`
or finally the columns from `scaffold_list_columns` will be used.
"""
"""
columns
=
self
.
column_export_list
only_columns
=
(
self
.
column_export_list
or
self
.
column_list
or
self
.
scaffold_list_columns
())
if
columns
is
None
:
columns
=
self
.
column_list
if
columns
is
None
:
columns
=
self
.
scaffold_list_columns
()
# Filter excluded columns
return
self
.
get_column_names
(
if
self
.
column_export_exclude_list
:
only_columns
=
only_columns
,
columns
=
[
c
for
c
in
columns
excluded_columns
=
self
.
column_export_exclude_list
,
if
c
not
in
self
.
column_export_exclude_list
]
)
return
[(
c
,
self
.
get_column_name
(
c
))
for
c
in
columns
]
def
scaffold_sortable_columns
(
self
):
def
scaffold_sortable_columns
(
self
):
"""
"""
...
...
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