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

Cleaned up code a bit

parent 9cec4976
...@@ -218,30 +218,27 @@ class AdminModelConverter(ModelConverterBase): ...@@ -218,30 +218,27 @@ class AdminModelConverter(ModelConverterBase):
field_args['validators'].append(validators.UUID()) field_args['validators'].append(validators.UUID())
return fields.TextField(**field_args) return fields.TextField(**field_args)
# Get list of fields and generate form
def model_fields(model, converter, only=None, exclude=None, field_args=None): def get_form(self, model, base_class=form.BaseForm,
""" only=None, exclude=None,
Generate a dictionary of fields for a given SQLAlchemy model. field_args=None):
# TODO: Support new 0.8 API
See `model_form` docstring for description of parameters. if not hasattr(model, '_sa_class_manager'):
""" raise TypeError('model must be a sqlalchemy mapped model')
# TODO: Support new 0.8 API
if not hasattr(model, '_sa_class_manager'): mapper = model._sa_class_manager.mapper
raise TypeError('model must be a sqlalchemy mapped model') field_args = field_args or {}
mapper = model._sa_class_manager.mapper properties = ((p.key, p) for p in mapper.iterate_properties)
field_args = field_args or {} if only:
properties = (x for x in properties if x[0] in only)
properties = ((p.key, p) for p in mapper.iterate_properties) elif exclude:
if only: properties = (x for x in properties if x[0] not in exclude)
properties = (x for x in properties if x[0] in only)
elif exclude: field_dict = {}
properties = (x for x in properties if x[0] not in exclude) for name, prop in properties:
field = self.convert(model, mapper, prop, field_args.get(name))
field_dict = {} if field is not None:
for name, prop in properties: field_dict[name] = field
field = converter.convert(model, mapper, prop, field_args.get(name))
if field is not None: return type(model.__name__ + 'Form', (base_class, ), field_dict)
field_dict[name] = field
return field_dict
...@@ -7,7 +7,6 @@ from flask import flash ...@@ -7,7 +7,6 @@ from flask import flash
from flask.ext.admin.babel import gettext, ngettext, lazy_gettext from flask.ext.admin.babel import gettext, ngettext, lazy_gettext
from flask.ext.admin.model import BaseModelView from flask.ext.admin.model import BaseModelView
from flask.ext.admin.model.form import model_form
from flask.ext.admin.actions import action from flask.ext.admin.actions import action
from flask.ext.admin.contrib.sqlamodel import form, filters, tools from flask.ext.admin.contrib.sqlamodel import form, filters, tools
...@@ -371,13 +370,11 @@ class ModelView(BaseModelView): ...@@ -371,13 +370,11 @@ class ModelView(BaseModelView):
""" """
Create form from the model. Create form from the model.
""" """
form_fields = form.model_fields( converter = form.AdminModelConverter(self)
self.model, return converter.get_form(self.model,
form.AdminModelConverter(self),
only=self.form_columns, only=self.form_columns,
exclude=self.excluded_form_columns, exclude=self.excluded_form_columns,
field_args=self.form_args) field_args=self.form_args)
return model_form(self.model, form_fields)
def scaffold_auto_joins(self): def scaffold_auto_joins(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