Changeset 3546 in products
- Timestamp:
- Sep 10, 2012 5:02:38 PM (12 years ago)
- Location:
- quintagroup.z3cform.captcha/trunk/quintagroup/z3cform/captcha
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.z3cform.captcha/trunk/quintagroup/z3cform/captcha/error.py
r1960 r3546 1 1 from z3c.form import error 2 from quintagroup.z3cform.captcha import widget 2 from quintagroup.z3cform.captcha import widget 3 3 4 4 CaptchaFailureMessage = error.ErrorViewMessage( -
quintagroup.z3cform.captcha/trunk/quintagroup/z3cform/captcha/field.py
r1960 r3546 3 3 from quintagroup.z3cform.captcha.interfaces import ICaptcha 4 4 5 5 6 class Captcha(ASCIILine): 6 7 implements(ICaptcha) -
quintagroup.z3cform.captcha/trunk/quintagroup/z3cform/captcha/interfaces.py
r1960 r3546 1 1 from zope.schema.interfaces import IASCIILine 2 2 3 3 4 class ICaptcha(IASCIILine): 4 5 u"""A field for captcha validation""" 5 -
quintagroup.z3cform.captcha/trunk/quintagroup/z3cform/captcha/tests.py
r2215 r3546 5 5 from zope.schema.interfaces import IField 6 6 from zope.component import queryMultiAdapter 7 from zope.publisher.browser import TestRequest8 7 9 8 from z3c.form import form … … 28 27 from quintagroup.z3cform.captcha.validator import CaptchaValidator 29 28 29 30 30 @onsetup 31 31 def setup_product(): … … 42 42 43 43 setup_product() 44 ptc.setupPloneSite(extension_profiles=['quintagroup.captcha.core:default', ])44 ptc.setupPloneSite(extension_profiles=['quintagroup.captcha.core:default', ]) 45 45 46 46 … … 55 55 56 56 def testCaptchaWidgetInterface(self): 57 self.assertEqual(IFieldWidget.implementedBy(CaptchaWidgetFactory), True) 57 self.assertEqual( 58 IFieldWidget.implementedBy(CaptchaWidgetFactory), True) 58 59 59 60 def testWidgetRegistration(self): … … 64 65 def testValidatorRegistration(self): 65 66 cfield = Captcha() 66 cvalidator = queryMultiAdapter((None, self.request, None, cfield, None), 67 IValidator) 67 cvalidator = queryMultiAdapter( 68 (None, self.request, None, cfield, None), 69 IValidator) 68 70 self.assertNotEqual(cvalidator, None) 69 71 … … 96 98 '(?:value="(?P<value>[0-9a-fA-F]+)"\s*)' \ 97 99 '){3}/>' 98 open('/tmp/z3c.form.html', 'w').write(self.html)100 open('/tmp/z3c.form.html', 'w').write(self.html) 99 101 hidden = re.search(HIDDENTAG, self.html) 100 102 self.assertTrue(hidden and hidden.group('value')) … … 110 112 FIELDTAG = '<input\s+[^>]*type=\"text\"\s*[^>]*>' 111 113 self.assertEqual(re.search(FIELDTAG, self.html) is not None, True) 112 114 113 115 114 116 class TestCaptchaValidator(ptc.PloneTestCase): … … 130 132 cwidget = CaptchaWidget(self.request) 131 133 cwidget.form = cform 132 self.validator = CaptchaValidator(self.portal, self.request, None, None, cwidget) 134 self.validator = CaptchaValidator(self.portal, self.request, None, 135 None, cwidget) 133 136 134 137 def testSubmitRightCaptcha(self): 135 138 decrypted = decrypt(self.captcha_key, self.hashkey) 136 key = getWord(int(parseKey(decrypted)['key']) -1)139 key = getWord(int(parseKey(decrypted)['key']) - 1) 137 140 try: 138 res =self.validator.validate(key)141 self.validator.validate(key) 139 142 except ConversionError, e: 140 143 self.fail("Rised unexpected %s error on right captcha submit" % e) … … 142 145 def testSubmitWrongCaptcha(self): 143 146 try: 144 res =self.validator.validate("wrong key")147 self.validator.validate("wrong key") 145 148 except ValueError, e: 146 149 self.assertEqual(str(e), u'Please re-enter validation code.') … … 150 153 def testSubmitRightCaptchaTwice(self): 151 154 decrypted = decrypt(self.captcha_key, self.hashkey) 152 key = getWord(int(parseKey(decrypted)['key']) -1)155 key = getWord(int(parseKey(decrypted)['key']) - 1) 153 156 self.validator.validate(key) 154 157 try: 155 res =self.validator.validate(key)158 self.validator.validate(key) 156 159 except ValueError, e: 157 160 self.assertEqual(str(e), u'Please re-enter validation code.') 158 161 else: 159 self.fail("No ValueError rised on right captcha key " \162 self.fail("No ValueError rised on right captcha key " 160 163 "submitting twice") 161 164 -
quintagroup.z3cform.captcha/trunk/quintagroup/z3cform/captcha/validator.py
r3259 r3546 1 1 from DateTime import DateTime 2 2 3 from zope.interface import Interface , Invalid3 from zope.interface import Interface 4 4 from zope.component import adapts 5 5 from zope.i18n import MessageFactory … … 15 15 _ = MessageFactory('quintagroup.z3cform.captcha') 16 16 17 17 18 class CaptchaValidator(SimpleFieldValidator): 18 19 """Captcha validator""" … … 24 25 if 'kss_z3cform_inline_validation' in self.request['URL']: 25 26 return 26 errors = ()27 27 context = self.context 28 28 request = self.request … … 33 33 decrypted_key = decrypt(context.captcha_key, hashkey) 34 34 parsed_key = parseKey(decrypted_key) 35 35 36 36 index = parsed_key['key'] 37 37 date = parsed_key['date'] 38 38 39 39 if captcha_type == 'static': 40 40 img = getattr(context, '%s.jpg' % index) … … 44 44 enc = value 45 45 solution = getWord(int(index)) 46 46 47 47 captcha_tool = getToolByName(context, 'portal_captchas') 48 48 if (enc != solution) or (captcha_tool.has_key(decrypted_key)) or (DateTime().timeTime() - float(date) > 3600):
Note: See TracChangeset
for help on using the changeset viewer.