Commit 0edfb4a9 authored by Serge S. Koval's avatar Serge S. Koval

excluded_list_columns and excluded_form_columns support.

parent 83f66df4
......@@ -5,12 +5,10 @@
- Ability to sort by fields that are not visible?
- Exclude for list columns
- Exclude for form fields
- Save and add another
- List display callables
- Built-in filtering support
- Configurable operations (=, >, <, etc)
- Callable operations
- Built-in search support
- Paginator class
- Custom CSS/JS in admin interface
- SQLA Model Admin
......
......@@ -23,12 +23,14 @@
--------------
.. autoattribute:: BaseModelView.list_columns
.. autoattribute:: BaseModelView.excluded_list_columns
.. autoattribute:: BaseModelView.rename_columns
.. autoattribute:: BaseModelView.sortable_columns
.. autoattribute:: ModelView.searchable_columns
.. autoattribute:: BaseModelView.form_columns
.. autoattribute:: BaseModelView.excluded_form_columns
.. autoattribute:: BaseModelView.form_args
.. autoattribute:: BaseModelView.page_size
......
......@@ -23,12 +23,14 @@
--------------
.. autoattribute:: BaseModelView.list_columns
.. autoattribute:: BaseModelView.excluded_list_columns
.. autoattribute:: BaseModelView.rename_columns
.. autoattribute:: BaseModelView.sortable_columns
.. autoattribute:: BaseModelView.searchable_columns
.. autoattribute:: BaseModelView.form_columns
.. autoattribute:: BaseModelView.excluded_form_columns
.. autoattribute:: BaseModelView.form_args
.. autoattribute:: BaseModelView.page_size
......
......@@ -49,11 +49,12 @@ def index():
# Customized Post model admin
class PostAdmin(sqlamodel.ModelView):
# Visible columns in the list view
list_columns = ('title', 'user')
#list_columns = ('title', 'user')
excluded_list_columns = ['text']
# List of columns that can be sorted. For 'user' column, use User.username as
# a column.
sortable_columns = ('title', ('user', User.username))
sortable_columns = ('title', ('user', User.username), 'date')
# Rename 'title' columns to 'Post Title' in list view
rename_columns = dict(title='Post Title')
......
......@@ -267,6 +267,12 @@ class ModelView(BaseModelView):
columns = []
for p in self._get_model_iterator():
# Filter by name
if (self.excluded_list_columns and
p.key in self.excluded_list_columns):
continue
# Verify type
if hasattr(p, 'direction'):
if p.direction.name == 'MANYTOONE':
columns.append(p.key)
......@@ -363,7 +369,8 @@ class ModelView(BaseModelView):
"""
return model_form(self.model,
form.BaseForm,
self.form_columns,
only=self.form_columns,
exclude=self.excluded_form_columns,
field_args=self.form_args,
converter=AdminModelConverter(self))
......
......@@ -52,6 +52,16 @@ class BaseModelView(BaseView):
list_columns = ('name', 'last_name', 'email')
"""
excluded_list_columns = None
"""
Collection of excluded list column names.
For example::
class MyModelView(BaseModelView):
excluded_list_columns = ('last_name', 'email')
"""
rename_columns = None
"""
Dictionary where key is column name and value is string to display.
......@@ -108,6 +118,16 @@ class BaseModelView(BaseView):
list_columns = ('name', 'email')
"""
excluded_form_columns = None
"""
Collection of excluded form field names.
For example::
class MyModelView(BaseModelView):
excluded_form_columns = ('last_name', 'email')
"""
form_args = None
"""
Dictionary of form field arguments. Refer to WTForm documentation for
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment