[3270] | 1 | from plone.app.discussion.interfaces import IDiscussionSettings |
---|
| 2 | from plone.app.discussion.interfaces import ICaptcha |
---|
| 3 | from quintagroup.z3cform.captcha.validator import CaptchaValidator |
---|
| 4 | from quintagroup.z3cform.captcha.widget import CaptchaWidget |
---|
[3279] | 5 | from quintagroup.plonecaptchas.config import CAPTCHA_NAME |
---|
[3270] | 6 | from quintagroup.plonecaptchas.interfaces import IQGDiscussionCaptchas |
---|
| 7 | |
---|
| 8 | from zope.component import queryUtility |
---|
| 9 | from zope.component import adapts |
---|
| 10 | from zope.interface import Interface |
---|
| 11 | from zope.schema.interfaces import IField |
---|
| 12 | from plone.registry.interfaces import IRegistry |
---|
| 13 | from z3c.form import validator |
---|
| 14 | |
---|
| 15 | |
---|
| 16 | class QGDiscussionCaptchaValidator(CaptchaValidator): |
---|
| 17 | adapts(Interface, IQGDiscussionCaptchas, Interface, IField, Interface) |
---|
| 18 | |
---|
| 19 | def validate(self, value): |
---|
| 20 | |
---|
| 21 | registry = queryUtility(IRegistry) |
---|
| 22 | settings = registry.forInterface(IDiscussionSettings, check=False) |
---|
| 23 | if settings.captcha == CAPTCHA_NAME: |
---|
| 24 | super(QGDiscussionCaptchaValidator, self).validate(value) |
---|
| 25 | |
---|
| 26 | |
---|
| 27 | validator.WidgetValidatorDiscriminators(QGDiscussionCaptchaValidator, |
---|
| 28 | widget=CaptchaWidget, |
---|
| 29 | field=ICaptcha['captcha']) |
---|