Commit b192ea76 authored by Serge S. Koval's avatar Serge S. Koval

Fixed #4. More documentation.

parent 716880e1
include LICENSE include LICENSE
recursive-include flask_admin/static * recursive-include flask_adminex/static *
recursive-include flask_admin/templates * recursive-include flask_adminex/templates *
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
.. autoattribute:: ModelView.searchable_columns .. autoattribute:: ModelView.searchable_columns
.. autoattribute:: ModelView.column_filters
.. autoattribute:: BaseModelView.form_columns .. autoattribute:: BaseModelView.form_columns
.. autoattribute:: BaseModelView.excluded_form_columns .. autoattribute:: BaseModelView.excluded_form_columns
.. autoattribute:: BaseModelView.form_args .. autoattribute:: BaseModelView.form_args
...@@ -54,6 +56,12 @@ ...@@ -54,6 +56,12 @@
.. automethod:: ModelView.scaffold_sortable_columns .. automethod:: ModelView.scaffold_sortable_columns
.. automethod:: ModelView.scaffold_form .. automethod:: ModelView.scaffold_form
.. automethod:: ModelView.init_search
.. automethod:: ModelView.scaffold_filters
.. autoattribute:: ModelView.filter_converter
Configuration Configuration
------------- -------------
......
...@@ -25,10 +25,13 @@ ...@@ -25,10 +25,13 @@
.. autoattribute:: BaseModelView.list_columns .. autoattribute:: BaseModelView.list_columns
.. autoattribute:: BaseModelView.excluded_list_columns .. autoattribute:: BaseModelView.excluded_list_columns
.. autoattribute:: BaseModelView.rename_columns .. autoattribute:: BaseModelView.rename_columns
.. autoattribute:: BaseModelView.sortable_columns .. autoattribute:: BaseModelView.sortable_columns
.. autoattribute:: BaseModelView.searchable_columns .. autoattribute:: BaseModelView.searchable_columns
.. autoattribute:: BaseModelView.column_filters
.. autoattribute:: BaseModelView.form_columns .. autoattribute:: BaseModelView.form_columns
.. autoattribute:: BaseModelView.excluded_form_columns .. autoattribute:: BaseModelView.excluded_form_columns
.. autoattribute:: BaseModelView.form_args .. autoattribute:: BaseModelView.form_args
...@@ -43,9 +46,11 @@ ...@@ -43,9 +46,11 @@
Scaffolding Scaffolding
----------- -----------
.. automethod:: BaseModelView.scaffold_pk
.. automethod:: BaseModelView.scaffold_list_columns .. automethod:: BaseModelView.scaffold_list_columns
.. automethod:: BaseModelView.scaffold_sortable_columns .. automethod:: BaseModelView.scaffold_sortable_columns
.. automethod:: BaseModelView.scaffold_form .. automethod:: BaseModelView.scaffold_form
.. automethod:: BaseModelView.scaffold_filters
Configuration Configuration
------------- -------------
...@@ -58,6 +63,9 @@ ...@@ -58,6 +63,9 @@
.. automethod:: BaseModelView.init_search .. automethod:: BaseModelView.init_search
.. automethod:: BaseModelView.get_filters
.. automethod:: BaseModelView.is_valid_filter
Data Data
---- ----
......
...@@ -3,7 +3,22 @@ from flask.ext.adminex.ext.sqlamodel import tools ...@@ -3,7 +3,22 @@ from flask.ext.adminex.ext.sqlamodel import tools
class BaseSQLAFilter(filters.BaseFilter): class BaseSQLAFilter(filters.BaseFilter):
"""
Base SQLAlchemy filter.
"""
def __init__(self, column, name, options=None, data_type=None): def __init__(self, column, name, options=None, data_type=None):
"""
Constructor.
`column`
Model field
`name`
Display name
`options`
Fixed set of options
`data_type`
Client data type
"""
super(BaseSQLAFilter, self).__init__(name, options, data_type) super(BaseSQLAFilter, self).__init__(name, options, data_type)
self.column = column self.column = column
......
...@@ -221,9 +221,28 @@ class ModelView(BaseModelView): ...@@ -221,9 +221,28 @@ class ModelView(BaseModelView):
For example, if you entered *=ZZZ*, *ILIKE 'ZZZ'* statement will be used. For example, if you entered *=ZZZ*, *ILIKE 'ZZZ'* statement will be used.
""" """
column_filters = None
"""
Collection of the column filters.
Can contain either field names or instances of :class:`flask.ext.adminex.ext.sqlamodel.filters.BaseFilter` classes.
For example::
class MyModelView(BaseModelView):
column_filters = ('user', 'email')
or::
class MyModelView(BaseModelView):
column_filters = (BooleanEqualFilter(User.name, 'Name'))
"""
filter_converter = filters.FilterConverter() filter_converter = filters.FilterConverter()
""" """
TBD: Field to filter converter.
Override this attribute to use non-default converter.
""" """
def __init__(self, model, session, def __init__(self, model, session,
...@@ -407,6 +426,16 @@ class ModelView(BaseModelView): ...@@ -407,6 +426,16 @@ class ModelView(BaseModelView):
return flt return flt
def is_valid_filter(self, filter):
"""
Verify that provided filter object is derived from the
SQLAlchemy-compatible filter class.
`filter`
Filter object to verify.
"""
return isinstance(filter, filters.BaseSQLAFilter)
def scaffold_form(self): def scaffold_form(self):
""" """
Create form from the model. Create form from the model.
......
...@@ -114,7 +114,7 @@ class BaseModelView(BaseView): ...@@ -114,7 +114,7 @@ class BaseModelView(BaseView):
""" """
Collection of the column filters. Collection of the column filters.
Can contain either field names or instances of :class:`flask.ext.admin.model.filters.BaseFilter` classes. Can contain either field names or instances of :class:`flask.ext.adminex.model.filters.BaseFilter` classes.
For example: For example:
...@@ -316,7 +316,7 @@ class BaseModelView(BaseView): ...@@ -316,7 +316,7 @@ class BaseModelView(BaseView):
""" """
return False return False
def scaffold_filter(self, name): def scaffold_filters(self, name):
""" """
Generate filter object for the given name Generate filter object for the given name
...@@ -637,7 +637,7 @@ class BaseModelView(BaseView): ...@@ -637,7 +637,7 @@ class BaseModelView(BaseView):
sortable_columns=self._sortable_columns, sortable_columns=self._sortable_columns,
# Stuff # Stuff
enumerate=enumerate, enumerate=enumerate,
gey_pk_value=self.get_pk_value, get_pk_value=self.get_pk_value,
get_value=get_value, get_value=get_value,
return_url=self._get_url('.index_view', return_url=self._get_url('.index_view',
page, page,
......
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