Commit 6e7fb167 authored by Serge S. Koval's avatar Serge S. Koval

Updated documentation

parent a260ad5f
...@@ -10,4 +10,5 @@ API ...@@ -10,4 +10,5 @@ API
mod_tools mod_tools
mod_contrib_sqlamodel mod_contrib_sqlamodel
mod_contrib_peeweemodel
mod_contrib_fileadmin mod_contrib_fileadmin
``flask.ext.admin.contrib.peeweemodel``
=======================================
Peewee model backend implementation.
.. automodule:: flask.ext.admin.contrib.peeweemodel
.. autoclass:: ModelView
:members:
:inherited-members:
:exclude-members: hide_backrefs, auto_select_related, list_select_related,
searchable_columns, filter_converter
Class inherits configuration options from :class:`~flask.ext.admin.model.BaseModelView` and they're not displayed here.
.. autoattribute:: searchable_columns
.. autoattribute:: filter_converter
.. autoattribute:: fast_mass_delete
.. autoattribute:: inline_models
``flask.ext.admin.contrib.sqlamodel`` ``flask.ext.admin.contrib.sqlamodel``
===================================== =====================================
SQLAlchemy model backend implementation.
.. automodule:: flask.ext.admin.contrib.sqlamodel .. automodule:: flask.ext.admin.contrib.sqlamodel
.. autoclass:: ModelView .. autoclass:: ModelView
...@@ -16,3 +18,5 @@ ...@@ -16,3 +18,5 @@
.. autoattribute:: list_select_related .. autoattribute:: list_select_related
.. autoattribute:: searchable_columns .. autoattribute:: searchable_columns
.. autoattribute:: filter_converter .. autoattribute:: filter_converter
.. autoattribute:: fast_mass_delete
.. autoattribute:: inline_models
...@@ -8,7 +8,8 @@ ...@@ -8,7 +8,8 @@
:exclude-members: can_create, can_edit, can_delete, list_template, edit_template, :exclude-members: can_create, can_edit, can_delete, list_template, edit_template,
create_template, list_columns, excluded_list_columns, rename_columns, create_template, list_columns, excluded_list_columns, rename_columns,
sortable_columns, searchable_columns, column_filters, form, form_columns, sortable_columns, searchable_columns, column_filters, form, form_columns,
excluded_form_columns, form_args, form_overrides, page_size excluded_form_columns, form_args, form_overrides, page_size,
disallowed_actions
.. autoattribute:: can_create .. autoattribute:: can_create
.. autoattribute:: can_edit .. autoattribute:: can_edit
...@@ -34,4 +35,6 @@ ...@@ -34,4 +35,6 @@
.. autoattribute:: form_args .. autoattribute:: form_args
.. autoattribute:: form_overrides .. autoattribute:: form_overrides
.. autoattribute:: disallowed_actions
.. autoattribute:: page_size .. autoattribute:: page_size
...@@ -177,7 +177,7 @@ Steps to add new model backend: ...@@ -177,7 +177,7 @@ Steps to add new model backend:
This method should return list of models with paging, This method should return list of models with paging,
sorting, etc applied. sorting, etc applied.
For SQLAlchemy it looks like: For SQLAlchemy backend it looks like:
1. If search was enabled and provided search value is not empty, 1. If search was enabled and provided search value is not empty,
generate LIKE statements for each field from `self.searchable_columns` generate LIKE statements for each field from `self.searchable_columns`
......
...@@ -114,8 +114,8 @@ def contribute_inline(model, form_class, inline_models): ...@@ -114,8 +114,8 @@ def contribute_inline(model, form_class, inline_models):
# Remove reverse property from the list # Remove reverse property from the list
ignore = [reverse_field.name] ignore = [reverse_field.name]
if info.exclude: if info.excluded_form_columns:
exclude = ignore + info.exclude exclude = ignore + info.excluded_form_columns
else: else:
exclude = ignore exclude = ignore
...@@ -123,8 +123,9 @@ def contribute_inline(model, form_class, inline_models): ...@@ -123,8 +123,9 @@ def contribute_inline(model, form_class, inline_models):
converter = CustomModelConverter() converter = CustomModelConverter()
child_form = model_form(info.model, child_form = model_form(info.model,
base_class=form.BaseForm, base_class=form.BaseForm,
only=info.include, only=info.form_columns,
exclude=exclude, exclude=exclude,
field_args=info.form_args,
allow_pk=True, allow_pk=True,
converter=converter) converter=converter)
......
...@@ -52,10 +52,27 @@ class ModelView(BaseModelView): ...@@ -52,10 +52,27 @@ class ModelView(BaseModelView):
inline_models = None inline_models = None
""" """
Inline related-model editing for parent to child relation:: Inline related-model editing for models with parent to child relation.
Accept enumerable with one of the values:
1. Child model class
class MyModelView(ModelView): class MyModelView(ModelView):
inline_models = (Post,) inline_models = (Post,)
2. Child model class and additional options
class MyModelView(ModelView):
inline_models = [(Post, dict(form_columns=['title']))]
3. Django-like ``InlineFormAdmin`` class instance
class MyInlineForm(InlineFormAdmin):
forum_columns = ('title', 'date')
class MyModelView(ModelView):
inline_models = (MyInlineForm,)
""" """
def __init__(self, model, name=None, def __init__(self, model, name=None,
...@@ -257,12 +274,6 @@ class ModelView(BaseModelView): ...@@ -257,12 +274,6 @@ class ModelView(BaseModelView):
return False return False
def update_model(self, form, model): def update_model(self, form, model):
"""
Update model from form.
`form`
Form instance
"""
try: try:
form.populate_obj(model) form.populate_obj(model)
model.save() model.save()
......
...@@ -345,8 +345,8 @@ def contribute_inline(session, model, form_class, inline_models): ...@@ -345,8 +345,8 @@ def contribute_inline(session, model, form_class, inline_models):
# Remove reverse property from the list # Remove reverse property from the list
ignore = [reverse_prop.key] ignore = [reverse_prop.key]
if info.exclude: if info.excluded_form_columns:
exclude = ignore + info.exclude exclude = ignore + info.excluded_form_columns
else: else:
exclude = ignore exclude = ignore
...@@ -354,8 +354,9 @@ def contribute_inline(session, model, form_class, inline_models): ...@@ -354,8 +354,9 @@ def contribute_inline(session, model, form_class, inline_models):
converter = AdminModelConverter(session, info) converter = AdminModelConverter(session, info)
child_form = get_form(info.model, child_form = get_form(info.model,
converter, converter,
only=info.include, only=info.form_columns,
exclude=exclude, exclude=exclude,
field_args=info.form_args,
hidden_pk=True) hidden_pk=True)
setattr(form_class, setattr(form_class,
......
...@@ -114,7 +114,7 @@ class ModelView(BaseModelView): ...@@ -114,7 +114,7 @@ class ModelView(BaseModelView):
fast_mass_delete = False fast_mass_delete = False
""" """
If set to `False` and user deletes more than one model using actions, If set to `False` and user deletes more than one model using built in action,
all models will be read from the database and then deleted one by one all models will be read from the database and then deleted one by one
giving SQLAlchemy chance to manually cleanup any dependencies (many-to-many giving SQLAlchemy chance to manually cleanup any dependencies (many-to-many
relationships, etc). relationships, etc).
...@@ -126,10 +126,27 @@ class ModelView(BaseModelView): ...@@ -126,10 +126,27 @@ class ModelView(BaseModelView):
inline_models = None inline_models = None
""" """
Inline related-model editing for parent to child relation:: Inline related-model editing for models with parent to child relation.
Accept enumerable with one of the values:
1. Child model class
class MyModelView(ModelView): class MyModelView(ModelView):
inline_models = (Post,) inline_models = (Post,)
2. Child model class and additional options
class MyModelView(ModelView):
inline_models = [(Post, dict(form_columns=['title']))]
3. Django-like ``InlineFormAdmin`` class instance
class MyInlineForm(InlineFormAdmin):
forum_columns = ('title', 'date')
class MyModelView(ModelView):
inline_models = (MyInlineForm,)
""" """
def __init__(self, model, session, def __init__(self, model, session,
......
...@@ -11,11 +11,30 @@ def converts(*args): ...@@ -11,11 +11,30 @@ def converts(*args):
class InlineFormAdmin(object): class InlineFormAdmin(object):
"""
Settings for inline form administration.
You can use this class to customize displayed form.
For example::
class MyUserInfoForm(InlineFormAdmin):
form_columns = ('name', 'email')
"""
def __init__(self, model, **kwargs): def __init__(self, model, **kwargs):
"""
Constructor
:param model:
Target model class
:param kwargs:
Additional options
"""
self.model = model self.model = model
defaults = dict(include=None, defaults = dict(form_columns=None,
exclude=None) excluded_form_columns=None,
form_args=None)
defaults.update(kwargs) defaults.update(kwargs)
for k, v in defaults.iteritems(): for k, v in defaults.iteritems():
......
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