Projet

Général

Profil

0001-form-improve-rendering-of-CAPTCHA-widget-7859.patch

Frédéric Péters, 18 août 2015 11:10

Télécharger (2,63 ko)

Voir les différences:

Subject: [PATCH 1/3] form: improve rendering of CAPTCHA widget (#7859)

 wcs/qommon/form.py | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)
wcs/qommon/form.py
250 250
        if self.get_widget('__keep_referer'):
251 251
            return self.get_widget('__keep_referer').parse()
252 252

  
253
    def add_captcha(self):
253
    def add_captcha(self, hint=None):
254 254
        if not self.captcha and not (get_session().won_captcha or get_session().user):
255
            self.captcha = CaptchaWidget('captcha')
255
            self.captcha = CaptchaWidget('captcha', hint=hint)
256 256

  
257 257
    def add(self, widget_class, name, *args, **kwargs):
258 258
        if kwargs and not kwargs.has_key('render_br'):
......
1079 1079
class CaptchaWidget(CompositeWidget):
1080 1080
    def __init__(self, name, value = None, mode = 'arithmetic-simple', *args, **kwargs):
1081 1081
        CompositeWidget.__init__(self, name, value, **kwargs)
1082
        self.render_br = False
1082 1083
        if value:
1083 1084
            token = value
1084 1085
        else:
......
1104 1105
                if b > a:
1105 1106
                    a, b = b, a
1106 1107
                answer = a - b
1107
            question = _('What is the result of %(a)d %(op)s %(b)d?') % {
1108
            self.question = _('What is the result of %(a)d %(op)s %(b)d?') % {
1108 1109
                    'a': a, 'b': b, 'op': _(operator)}
1109
            hint = _('Please answer this simple mathematical question as proof you are not a bot.')
1110
        self.add(StringWidget, 'q', title = question, hint = hint, required=True)
1110
            self.hint = kwargs.get('hint')
1111
            if self.hint is None:
1112
                self.hint = _('Please answer this simple mathematical question as proof you are not a bot.')
1113
        self.add(StringWidget, 'q', required=True)
1111 1114
        token['answer'] = str(answer)
1112 1115

  
1113 1116
    def _parse(self, request):
......
1120 1123
        else:
1121 1124
            self.error = _('wrong answer')
1122 1125

  
1126
    def get_title(self):
1127
        return self.question
1128

  
1129
    def render_content(self):
1130
        r = TemplateIO(html=True)
1131
        for widget in self.get_widgets():
1132
            r += widget.render_content()
1133
        return r.getvalue()
1123 1134

  
1124 1135
class WidgetList(quixote.form.widget.WidgetList):
1125 1136
    def render(self):
1126
-