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 |
---|
5 | from quintagroup.plonecaptchas.config import CAPTCHA_NAME |
---|
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']) |
---|