Commit 6b19cd0c authored by Paul Brown's avatar Paul Brown

add suggested changes to editable list view flexibility

parent 5e1d3b27
......@@ -6,6 +6,7 @@ from flask.ext.admin import expose
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.model.form import wrap_fields_in_fieldlist
from flask.ext.admin.model.fields import ListEditableFieldList
from flask.ext.admin._compat import iteritems, string_types
import mongoengine
......@@ -22,7 +23,6 @@ from .helpers import format_error
from .ajax import process_ajax_references, create_ajax_loader
from .subdoc import convert_subdocuments
# Set up logger
log = logging.getLogger("flask-admin.mongo")
......@@ -399,7 +399,8 @@ class ModelView(BaseModelView):
return form_class
def scaffold_list_form(self, CustomFieldList, validators=None):
def scaffold_list_form(self, custom_fieldlist=ListEditableFieldList,
validators=None):
"""
Create form for the `index_view` using only the columns from
`self.column_editable_list`.
......@@ -407,7 +408,7 @@ class ModelView(BaseModelView):
:param validators:
`form_args` dict with only validators
{'name': {'validators': [required()]}}
:param CustomFieldList:
:param custom_fieldlist:
A WTForm FieldList class. By default, `ListEditableFieldList`.
"""
form_class = get_form(self.model,
......@@ -418,7 +419,7 @@ class ModelView(BaseModelView):
return wrap_fields_in_fieldlist(self.form_base_class,
form_class,
CustomFieldList)
custom_fieldlist)
# AJAX foreignkey support
def _create_ajax_loader(self, name, opts):
......
......@@ -6,6 +6,7 @@ from flask.ext.admin._compat import string_types
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.model.form import wrap_fields_in_fieldlist
from flask.ext.admin.model.fields import ListEditableFieldList
from peewee import PrimaryKeyField, ForeignKeyField, Field, CharField, TextField
......@@ -238,7 +239,8 @@ class ModelView(BaseModelView):
return form_class
def scaffold_list_form(self, CustomFieldList, validators=None):
def scaffold_list_form(self, custom_fieldlist=ListEditableFieldList,
validators=None):
"""
Create form for the `index_view` using only the columns from
`self.column_editable_list`.
......@@ -246,7 +248,7 @@ class ModelView(BaseModelView):
:param validators:
`form_args` dict with only validators
{'name': {'validators': [required()]}}
:param CustomFieldList:
:param custom_fieldlist:
A WTForm FieldList class. By default, `ListEditableFieldList`.
"""
form_class = get_form(self.model, self.model_form_converter(self),
......@@ -256,7 +258,7 @@ class ModelView(BaseModelView):
return wrap_fields_in_fieldlist(self.form_base_class,
form_class,
CustomFieldList)
custom_fieldlist)
def scaffold_inline_form_models(self, form_class):
converter = self.model_form_converter(self)
......
......@@ -12,6 +12,7 @@ from flask.ext.admin._compat import string_types
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView
from flask.ext.admin.model.form import wrap_fields_in_fieldlist
from flask.ext.admin.model.fields import ListEditableFieldList
from flask.ext.admin.actions import action
from flask.ext.admin._backwards import ObsoleteAttr
......@@ -612,7 +613,8 @@ class ModelView(BaseModelView):
return form_class
def scaffold_list_form(self, CustomFieldList, validators=None):
def scaffold_list_form(self, custom_fieldlist=ListEditableFieldList,
validators=None):
"""
Create form for the `index_view` using only the columns from
`self.column_editable_list`.
......@@ -620,7 +622,7 @@ class ModelView(BaseModelView):
:param validators:
`form_args` dict with only validators
{'name': {'validators': [required()]}}
:param CustomFieldList:
:param custom_fieldlist:
A WTForm FieldList class. By default, `ListEditableFieldList`.
"""
converter = self.model_form_converter(self.session, self)
......@@ -631,7 +633,7 @@ class ModelView(BaseModelView):
return wrap_fields_in_fieldlist(self.form_base_class,
form_class,
CustomFieldList)
custom_fieldlist)
def scaffold_inline_form_models(self, form_class):
"""
......
......@@ -854,7 +854,8 @@ class BaseModelView(BaseView, ActionsMixin):
"""
raise NotImplementedError('Please implement scaffold_form method')
def scaffold_list_form(self, CustomFieldList, validators=None):
def scaffold_list_form(self, custom_fieldlist=ListEditableFieldList,
validators=None):
"""
Create form for the `index_view` using only the columns from
`self.column_editable_list`.
......@@ -862,7 +863,7 @@ class BaseModelView(BaseView, ActionsMixin):
:param validators:
`form_args` dict with only validators
{'name': {'validators': [required()]}}
:param CustomFieldList:
:param custom_fieldlist:
A WTForm FieldList class. By default, `ListEditableFieldList`.
Must be implemented in the child class.
......@@ -920,7 +921,7 @@ class BaseModelView(BaseView, ActionsMixin):
else:
validators = None
return self.scaffold_list_form(ListEditableFieldList, validators)
return self.scaffold_list_form(validators=validators)
def get_create_form(self):
"""
......
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