From cc6bdd6aeff4f4840b4fbe6ea276cf74479ed1bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?THIVOLLE-CAZAT=20C=C3=A9dric?= Date: Tue, 1 Jan 2019 17:59:28 +0100 Subject: [PATCH] widget support the kwargs to add custom html attributes --- flask_wtf/recaptcha/widgets.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/flask_wtf/recaptcha/widgets.py b/flask_wtf/recaptcha/widgets.py index 229537f4..52cdf77a 100644 --- a/flask_wtf/recaptcha/widgets.py +++ b/flask_wtf/recaptcha/widgets.py @@ -8,7 +8,7 @@ RECAPTCHA_SCRIPT = u'https://www.google.com/recaptcha/api.js' RECAPTCHA_TEMPLATE = u''' -
+
''' __all__ = ['RecaptchaWidget'] @@ -16,7 +16,7 @@ class RecaptchaWidget(object): - def recaptcha_html(self, public_key): + def recaptcha_html(self, public_key, **kwargs): html = current_app.config.get('RECAPTCHA_HTML') if html: return Markup(html) @@ -27,7 +27,9 @@ def recaptcha_html(self, public_key): attrs = current_app.config.get('RECAPTCHA_DATA_ATTRS', {}) attrs['sitekey'] = public_key - snippet = u' '.join([u'data-%s="%s"' % (k, attrs[k]) for k in attrs]) + snippet_attrs = [u'%s="%s"' % (k, v) for k, v in kwargs.items()] + snippet_attrs += [u'data-%s="%s"' % (k, attrs[k]) for k in attrs] + snippet = u' '.join(snippet_attrs) return Markup(RECAPTCHA_TEMPLATE % (script, snippet)) def __call__(self, field, error=None, **kwargs): @@ -37,5 +39,8 @@ def __call__(self, field, error=None, **kwargs): public_key = current_app.config['RECAPTCHA_PUBLIC_KEY'] except KeyError: raise RuntimeError('RECAPTCHA_PUBLIC_KEY config not set') - - return self.recaptcha_html(public_key) + defaults = (('id', field.id), ('class', 'g-recaptcha')) + for key, default_value in defaults: + if key not in kwargs: + kwargs[key] = default_value + return self.recaptcha_html(public_key, **kwargs)