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

improve form error message flashing, move into helpers

parent 3c2b7122
from re import sub from re import sub
from jinja2 import contextfunction from jinja2 import contextfunction
from flask import g, request, url_for from flask import g, request, url_for, flash
from wtforms.validators import DataRequired, InputRequired from wtforms.validators import DataRequired, InputRequired
from flask.ext.admin._compat import urljoin, urlparse from flask.ext.admin._compat import urljoin, urlparse, iteritems
from flask.ext.admin.babel import gettext
from ._compat import string_types from ._compat import string_types
...@@ -93,7 +93,12 @@ def is_field_error(errors): ...@@ -93,7 +93,12 @@ def is_field_error(errors):
return True return True
return False return False
def flash_errors(form, message):
for field_name, errors in iteritems(form.errors):
errors = form[field_name].label.text + u": " + u", ".join(errors)
flash(gettext(message, error=str(errors)), 'error')
@contextfunction @contextfunction
def resolve_ctx(context): def resolve_ctx(context):
......
...@@ -14,7 +14,7 @@ from flask.ext.admin.form import BaseForm, FormOpts, rules ...@@ -14,7 +14,7 @@ from flask.ext.admin.form import BaseForm, FormOpts, rules
from flask.ext.admin.model import filters, typefmt from flask.ext.admin.model import filters, typefmt
from flask.ext.admin.actions import ActionsMixin from flask.ext.admin.actions import ActionsMixin
from flask.ext.admin.helpers import (get_form_data, validate_form_on_submit, from flask.ext.admin.helpers import (get_form_data, validate_form_on_submit,
get_redirect_target) get_redirect_target, flash_errors)
from flask.ext.admin.tools import rec_getattr from flask.ext.admin.tools import rec_getattr
from flask.ext.admin._backwards import ObsoleteAttr from flask.ext.admin._backwards import ObsoleteAttr
from flask.ext.admin._compat import iteritems, OrderedDict, as_unicode from flask.ext.admin._compat import iteritems, OrderedDict, as_unicode
...@@ -972,6 +972,9 @@ class BaseModelView(BaseView, ActionsMixin): ...@@ -972,6 +972,9 @@ class BaseModelView(BaseView, ActionsMixin):
Instantiate model delete form and return it. Instantiate model delete form and return it.
Override to implement custom behavior. Override to implement custom behavior.
The delete form originally used a GET request, so delete_form
accepts both GET and POST request for backwards compatibility.
""" """
if request.form: if request.form:
return self._delete_form_class(request.form) return self._delete_form_class(request.form)
...@@ -1558,12 +1561,7 @@ class BaseModelView(BaseView, ActionsMixin): ...@@ -1558,12 +1561,7 @@ class BaseModelView(BaseView, ActionsMixin):
flash(gettext('Record was successfully deleted.')) flash(gettext('Record was successfully deleted.'))
return redirect(return_url) return redirect(return_url)
else: else:
# flash validation errors flash_errors(form, message='Failed to delete record. %(error)s')
for field_name, errors in iteritems(form.errors):
errors = field_name + u": " + u", ".join(errors)
flash(gettext('Failed to delete record. %(error)s',
error=str(errors)),
'error')
return redirect(return_url) return redirect(return_url)
......
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