Unverified Commit 19397625 authored by Alan Hamlett's avatar Alan Hamlett Committed by GitHub

Merge pull request #1779 from alanhamlett/master

use Markupsafe to support WTForms 3
parents 829c24db c4715f06
...@@ -8,6 +8,11 @@ ...@@ -8,6 +8,11 @@
import sys import sys
import warnings import warnings
try:
from wtforms.widgets import HTMLString as Markup
except ImportError:
from markupsafe import Markup # noqa: F401
def get_property(obj, name, old_name, default=None): def get_property(obj, name, old_name, default=None):
""" """
......
from wtforms.widgets import HTMLString, html_params from wtforms.widgets import html_params
from jinja2 import escape from jinja2 import escape
from mongoengine.fields import GridFSProxy, ImageGridFsProxy from mongoengine.fields import GridFSProxy, ImageGridFsProxy
from flask_admin._backwards import Markup
from flask_admin.helpers import get_url from flask_admin.helpers import get_url
from . import helpers from . import helpers
...@@ -31,7 +32,7 @@ class MongoFileInput(object): ...@@ -31,7 +32,7 @@ class MongoFileInput(object):
'marker': '_%s-delete' % field.name 'marker': '_%s-delete' % field.name
} }
return HTMLString('%s<input %s>' % (placeholder, return Markup('%s<input %s>' % (placeholder,
html_params(name=field.name, html_params(name=field.name,
type='file', type='file',
**kwargs))) **kwargs)))
...@@ -46,7 +47,8 @@ class MongoImageInput(object): ...@@ -46,7 +47,8 @@ class MongoImageInput(object):
' <input type="checkbox" name="%(marker)s">Delete</input>' ' <input type="checkbox" name="%(marker)s">Delete</input>'
'</div>') '</div>')
def __call__(self, field, **kwargs):
def __call__(self, field, **kwargs):
kwargs.setdefault('id', field.id) kwargs.setdefault('id', field.id)
placeholder = '' placeholder = ''
...@@ -57,7 +59,7 @@ class MongoImageInput(object): ...@@ -57,7 +59,7 @@ class MongoImageInput(object):
'marker': '_%s-delete' % field.name 'marker': '_%s-delete' % field.name
} }
return HTMLString('%s<input %s>' % (placeholder, return Markup('%s<input %s>' % (placeholder,
html_params(name=field.name, html_params(name=field.name,
type='file', type='file',
**kwargs))) **kwargs)))
from wtforms.widgets.core import HTMLString, escape from wtforms.widgets.core import escape
from flask_admin._backwards import Markup
class CheckboxListInput: class CheckboxListInput:
...@@ -26,4 +28,4 @@ class CheckboxListInput: ...@@ -26,4 +28,4 @@ class CheckboxListInput:
'selected': ' checked' if selected else '', 'selected': ' checked' if selected else '',
} }
items.append(self.template % args) items.append(self.template % args)
return HTMLString(''.join(items)) return Markup(''.join(items))
...@@ -5,7 +5,7 @@ from werkzeug import secure_filename ...@@ -5,7 +5,7 @@ from werkzeug import secure_filename
from werkzeug.datastructures import FileStorage from werkzeug.datastructures import FileStorage
from wtforms import ValidationError, fields from wtforms import ValidationError, fields
from wtforms.widgets import HTMLString, html_params from wtforms.widgets import html_params
try: try:
from wtforms.fields.core import _unset_value as unset_value from wtforms.fields.core import _unset_value as unset_value
...@@ -15,6 +15,7 @@ except ImportError: ...@@ -15,6 +15,7 @@ except ImportError:
from flask_admin.babel import gettext from flask_admin.babel import gettext
from flask_admin.helpers import get_url from flask_admin.helpers import get_url
from flask_admin._backwards import Markup
from flask_admin._compat import string_types, urljoin from flask_admin._compat import string_types, urljoin
...@@ -59,7 +60,7 @@ class FileUploadInput(object): ...@@ -59,7 +60,7 @@ class FileUploadInput(object):
else: else:
value = field.data or '' value = field.data or ''
return HTMLString(template % { return Markup(template % {
'text': html_params(type='text', 'text': html_params(type='text',
readonly='readonly', readonly='readonly',
value=value, value=value,
...@@ -108,7 +109,7 @@ class ImageUploadInput(object): ...@@ -108,7 +109,7 @@ class ImageUploadInput(object):
else: else:
template = self.empty_template template = self.empty_template
return HTMLString(template % args) return Markup(template % args)
def get_url(self, field): def get_url(self, field):
if field.thumbnail_size: if field.thumbnail_size:
......
from flask import json from flask import json
from jinja2 import escape from jinja2 import escape
from wtforms.widgets import HTMLString, html_params from wtforms.widgets import html_params
from flask_admin._backwards import Markup
from flask_admin._compat import as_unicode, text_type from flask_admin._compat import as_unicode, text_type
from flask_admin.babel import gettext from flask_admin.babel import gettext
from flask_admin.helpers import get_url from flask_admin.helpers import get_url
...@@ -64,7 +65,7 @@ class AjaxSelect2Widget(object): ...@@ -64,7 +65,7 @@ class AjaxSelect2Widget(object):
minimum_input_length = int(field.loader.options.get('minimum_input_length', 1)) minimum_input_length = int(field.loader.options.get('minimum_input_length', 1))
kwargs.setdefault('data-minimum-input-length', minimum_input_length) kwargs.setdefault('data-minimum-input-length', minimum_input_length)
return HTMLString('<input %s>' % html_params(name=field.name, **kwargs)) return Markup('<input %s>' % html_params(name=field.name, **kwargs))
class XEditableWidget(object): class XEditableWidget(object):
...@@ -93,7 +94,7 @@ class XEditableWidget(object): ...@@ -93,7 +94,7 @@ class XEditableWidget(object):
kwargs = self.get_kwargs(field, kwargs) kwargs = self.get_kwargs(field, kwargs)
return HTMLString( return Markup(
'<a %s>%s</a>' % (html_params(**kwargs), '<a %s>%s</a>' % (html_params(**kwargs),
escape(display_value)) escape(display_value))
) )
......
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