Commit 9c503bc0 authored by Serge S. Koval's avatar Serge S. Koval

Merged upstream

parents 08cb31b2 d1b8b15f
...@@ -18,7 +18,6 @@ rename_columns column_labels ...@@ -18,7 +18,6 @@ rename_columns column_labels
sortable_columns column_sortable_list sortable_columns column_sortable_list
searchable_columns column_searchable_list searchable_columns column_searchable_list
list_display_pk column_display_pk list_display_pk column_display_pk
hide_backrefs column_hide_backrefs
auto_select_related column_auto_select_related auto_select_related column_auto_select_related
list_select_related column_select_related_list list_select_related column_select_related_list
list_display_all_relations column_display_all_relations list_display_all_relations column_display_all_relations
......
...@@ -22,6 +22,10 @@ from .ajax import process_ajax_references, create_ajax_loader ...@@ -22,6 +22,10 @@ from .ajax import process_ajax_references, create_ajax_loader
from .subdoc import convert_subdocuments from .subdoc import convert_subdocuments
# Set up logger
log = logging.getLogger("flask-admin.mongo")
SORTABLE_FIELDS = set(( SORTABLE_FIELDS = set((
mongoengine.StringField, mongoengine.StringField,
mongoengine.IntField, mongoengine.IntField,
...@@ -478,7 +482,7 @@ class ModelView(BaseModelView): ...@@ -478,7 +482,7 @@ class ModelView(BaseModelView):
flash(gettext('Failed to create model. %(error)s', flash(gettext('Failed to create model. %(error)s',
error=format_error(ex)), error=format_error(ex)),
'error') 'error')
logging.exception('Failed to create model') log.exception('Failed to create model')
return False return False
else: else:
self.after_model_change(form, model, True) self.after_model_change(form, model, True)
...@@ -505,7 +509,7 @@ class ModelView(BaseModelView): ...@@ -505,7 +509,7 @@ class ModelView(BaseModelView):
flash(gettext('Failed to update model. %(error)s', flash(gettext('Failed to update model. %(error)s',
error=format_error(ex)), error=format_error(ex)),
'error') 'error')
logging.exception('Failed to update model') log.exception('Failed to update model')
return False return False
else: else:
self.after_model_change(form, model, False) self.after_model_change(form, model, False)
...@@ -530,7 +534,7 @@ class ModelView(BaseModelView): ...@@ -530,7 +534,7 @@ class ModelView(BaseModelView):
flash(gettext('Failed to delete model. %(error)s', flash(gettext('Failed to delete model. %(error)s',
error=format_error(ex)), error=format_error(ex)),
'error') 'error')
logging.exception('Failed to delete model') log.exception('Failed to delete model')
return False return False
# FileField access API # FileField access API
......
...@@ -15,6 +15,9 @@ from .form import get_form, CustomModelConverter, InlineModelConverter, save_inl ...@@ -15,6 +15,9 @@ from .form import get_form, CustomModelConverter, InlineModelConverter, save_inl
from .tools import get_primary_key, parse_like_term from .tools import get_primary_key, parse_like_term
from .ajax import create_ajax_loader from .ajax import create_ajax_loader
# Set up logger
log = logging.getLogger("flask-admin.peewee")
class ModelView(BaseModelView): class ModelView(BaseModelView):
column_filters = None column_filters = None
...@@ -350,7 +353,7 @@ class ModelView(BaseModelView): ...@@ -350,7 +353,7 @@ class ModelView(BaseModelView):
raise raise
flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error') flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to create model') log.exception('Failed to create model')
return False return False
else: else:
self.after_model_change(form, model, True) self.after_model_change(form, model, True)
...@@ -370,7 +373,7 @@ class ModelView(BaseModelView): ...@@ -370,7 +373,7 @@ class ModelView(BaseModelView):
raise raise
flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error') flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to update model') log.exception('Failed to update model')
return False return False
else: else:
self.after_model_change(form, model, False) self.after_model_change(form, model, False)
...@@ -387,7 +390,7 @@ class ModelView(BaseModelView): ...@@ -387,7 +390,7 @@ class ModelView(BaseModelView):
raise raise
flash(gettext('Failed to delete model. %(error)s', error=str(ex)), 'error') flash(gettext('Failed to delete model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to delete model') log.exception('Failed to delete model')
return False return False
# Default model actions # Default model actions
......
...@@ -15,6 +15,9 @@ from flask.ext.admin.helpers import get_form_data ...@@ -15,6 +15,9 @@ from flask.ext.admin.helpers import get_form_data
from .filters import BasePyMongoFilter from .filters import BasePyMongoFilter
from .tools import parse_like_term from .tools import parse_like_term
# Set up logger
log = logging.getLogger("flask-admin.pymongo")
class ModelView(BaseModelView): class ModelView(BaseModelView):
""" """
...@@ -260,7 +263,7 @@ class ModelView(BaseModelView): ...@@ -260,7 +263,7 @@ class ModelView(BaseModelView):
except Exception as ex: except Exception as ex:
flash(gettext('Failed to create model. %(error)s', error=str(ex)), flash(gettext('Failed to create model. %(error)s', error=str(ex)),
'error') 'error')
logging.exception('Failed to create model') log.exception('Failed to create model')
return False return False
else: else:
self.after_model_change(form, model, True) self.after_model_change(form, model, True)
...@@ -285,7 +288,7 @@ class ModelView(BaseModelView): ...@@ -285,7 +288,7 @@ class ModelView(BaseModelView):
except Exception as ex: except Exception as ex:
flash(gettext('Failed to update model. %(error)s', error=str(ex)), flash(gettext('Failed to update model. %(error)s', error=str(ex)),
'error') 'error')
logging.exception('Failed to update model') log.exception('Failed to update model')
return False return False
else: else:
self.after_model_change(form, model, False) self.after_model_change(form, model, False)
...@@ -311,7 +314,7 @@ class ModelView(BaseModelView): ...@@ -311,7 +314,7 @@ class ModelView(BaseModelView):
except Exception as ex: except Exception as ex:
flash(gettext('Failed to delete model. %(error)s', error=str(ex)), flash(gettext('Failed to delete model. %(error)s', error=str(ex)),
'error') 'error')
logging.exception('Failed to delete model') log.exception('Failed to delete model')
return False return False
# Default model actions # Default model actions
......
...@@ -10,6 +10,9 @@ from flask.ext.admin.base import BaseView, expose ...@@ -10,6 +10,9 @@ from flask.ext.admin.base import BaseView, expose
from flask.ext.admin.babel import gettext from flask.ext.admin.babel import gettext
from flask.ext.admin._compat import VER from flask.ext.admin._compat import VER
# Set up logger
log = logging.getLogger("flask-admin.redis")
class CommandError(Exception): class CommandError(Exception):
""" """
...@@ -203,5 +206,5 @@ class RedisCli(BaseView): ...@@ -203,5 +206,5 @@ class RedisCli(BaseView):
except CommandError as err: except CommandError as err:
return self._error('Cli: %s' % err) return self._error('Cli: %s' % err)
except Exception as ex: except Exception as ex:
logging.exception(ex) log.exception(ex)
return self._error('Cli: %s' % ex) return self._error('Cli: %s' % ex)
...@@ -120,10 +120,6 @@ class AdminModelConverter(ModelConverterBase): ...@@ -120,10 +120,6 @@ class AdminModelConverter(ModelConverterBase):
if prop.direction.name == 'MANYTOONE': if prop.direction.name == 'MANYTOONE':
return self._model_select_field(prop, False, remote_model, **kwargs) return self._model_select_field(prop, False, remote_model, **kwargs)
elif prop.direction.name == 'ONETOMANY': elif prop.direction.name == 'ONETOMANY':
# Skip backrefs
if not local_column.foreign_keys and getattr(self.view, 'column_hide_backrefs', True):
return None
return self._model_select_field(prop, True, remote_model, **kwargs) return self._model_select_field(prop, True, remote_model, **kwargs)
elif prop.direction.name == 'MANYTOMANY': elif prop.direction.name == 'MANYTOMANY':
return self._model_select_field(prop, True, remote_model, **kwargs) return self._model_select_field(prop, True, remote_model, **kwargs)
......
...@@ -19,6 +19,10 @@ from .tools import is_inherited_primary_key, get_column_for_current_model, get_q ...@@ -19,6 +19,10 @@ from .tools import is_inherited_primary_key, get_column_for_current_model, get_q
from .ajax import create_ajax_loader from .ajax import create_ajax_loader
# Set up logger
log = logging.getLogger("flask-admin.sqla")
class ModelView(BaseModelView): class ModelView(BaseModelView):
""" """
SQLAlchemy model view SQLAlchemy model view
...@@ -29,13 +33,6 @@ class ModelView(BaseModelView): ...@@ -29,13 +33,6 @@ class ModelView(BaseModelView):
admin.add_view(ModelView(User, db.session)) admin.add_view(ModelView(User, db.session))
""" """
column_hide_backrefs = ObsoleteAttr('column_hide_backrefs',
'hide_backrefs',
True)
"""
Set this to False if you want to see multiselect for model backrefs.
"""
column_auto_select_related = ObsoleteAttr('column_auto_select_related', column_auto_select_related = ObsoleteAttr('column_auto_select_related',
'auto_select_related', 'auto_select_related',
True) True)
...@@ -792,7 +789,7 @@ class ModelView(BaseModelView): ...@@ -792,7 +789,7 @@ class ModelView(BaseModelView):
raise raise
flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error') flash(gettext('Failed to create model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to create model') log.exception('Failed to create model')
self.session.rollback() self.session.rollback()
return False return False
else: else:
...@@ -818,7 +815,7 @@ class ModelView(BaseModelView): ...@@ -818,7 +815,7 @@ class ModelView(BaseModelView):
raise raise
flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error') flash(gettext('Failed to update model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to update model') log.exception('Failed to update model')
self.session.rollback() self.session.rollback()
return False return False
...@@ -845,7 +842,7 @@ class ModelView(BaseModelView): ...@@ -845,7 +842,7 @@ class ModelView(BaseModelView):
raise raise
flash(gettext('Failed to delete model. %(error)s', error=str(ex)), 'error') flash(gettext('Failed to delete model. %(error)s', error=str(ex)), 'error')
logging.exception('Failed to delete model') log.exception('Failed to delete model')
self.session.rollback() self.session.rollback()
return False return False
......
...@@ -135,5 +135,7 @@ class Select2TagsField(fields.TextField): ...@@ -135,5 +135,7 @@ class Select2TagsField(fields.TextField):
def _value(self): def _value(self):
if isinstance(self.data, (list, tuple)): if isinstance(self.data, (list, tuple)):
return u','.join(as_unicode(v) for v in self.data) return u','.join(as_unicode(v) for v in self.data)
else: elif self.data:
return as_unicode(self.data) return as_unicode(self.data)
else:
return u''
...@@ -95,8 +95,8 @@ ...@@ -95,8 +95,8 @@
if ($el.attr('data-tags')) { if ($el.attr('data-tags')) {
$.extend(opts, { $.extend(opts, {
multiple: true, tokenSeparators: [','],
tokenSeparators: [','] tags: []
}); });
} }
......
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