Changeset 663

Show
Ignore:
Timestamp:
11/28/06 08:35:40
Author:
crchemist
Message:

Added some functions to captcha tool.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qPloneCaptchas/trunk/CaptchaTool.py

    r662 r663  
    11from Products.Transience.Transience import TransientObjectContainer 
    22from Globals import InitializeClass 
     3from AccessControl import ClassSecurityInfo 
     4 
     5def constructCaptchaTool(self, id, title='', timeout_mins=20, 
     6                         addNotification=None, delNotification=None, 
     7                         limit=0, period_secs=20, 
     8                         REQUEST=None): 
     9    ob = CaptchaTool(id, title, timeout_mins, 
     10                     addNotification, delNotification, 
     11                     limit=limit, period_secs=period_secs) 
     12    self._setObject(id, ob) 
     13    if REQUEST is not None: 
     14        return self.manage_main(self, REQUEST, update_menu=1) 
     15 
    316class CaptchaTool(TransientObjectContainer): 
    417    """portal_captcha tool class 
    518    """ 
     19    security = ClassSecurityInfo() 
     20    security.declarePublic('addExpiredKey') 
     21    def addExpiredKey(self, key): 
     22        self.new(key) 
    623 
    724InitializeClass(CaptchaTool) 
  • qPloneCaptchas/trunk/Extensions/Install.py

    r662 r663  
    11from Products.qPloneCaptchas.config import * 
     2from Products.qPloneCaptchas.CaptchaTool import constructCaptchaTool 
    23from Products.CMFCore.utils import getToolByName 
    34from StringIO import StringIO 
     
    910from random import randint 
    1011from Products.CMFPlone.migrations.migration_util import safeEditProperty 
    11 from Products.Transience.Transience import constructTransientObjectContainer 
    1212 
    1313def install(self): 
     
    1616    # add captchas_tool 
    1717    if not hasattr(portal, TOOL_ID): 
    18         constructTransientObjectContainer(portal, id=TOOL_ID, timeout_mins=60) 
     18        constructCaptchaTool(portal, id=TOOL_ID, timeout_mins=60) 
    1919 
    2020    safeEditProperty(self, 'captcha_key', generateKey(8)) 
  • qPloneCaptchas/trunk/__init__.py

    r662 r663  
    1111tools = (CaptchaTool.CaptchaTool, ) 
    1212def initialize(context): 
    13     ToolInit("CaptchaTool", tools=tools, icon=config.TOOL_ICON).initialize(context) 
     13    context.registerClass(CaptchaTool.CaptchaTool, 
     14                          constructors=(CaptchaTool.constructCaptchaTool,)) 
     15 
     16    ToolInit("CaptchaTool", 
     17             tools=tools, 
     18             icon=config.TOOL_ICON,).initialize(context) 
  • qPloneCaptchas/trunk/skins/plone_captchas/dynamic/captcha_validator.vpy

    r662 r663  
    11from Products.qPloneCaptchas.utils import decrypt, parseKey, \ 
    2      encrypt1, getWord, addExpiredKey 
     2     encrypt1, getWord 
    33from DateTime import DateTime 
    4  
     4from Products.CMFCore.utils import getToolByName 
    55if state.getStatus()=='failure': 
    66    return  state 
     
    1111decrypted_key = decrypt(context.captcha_key, hashkey) 
    1212parsed_key = parseKey(decrypted_key) 
    13   
     13 
    1414index = parsed_key['key'] 
    1515date = parsed_key['date'] 
     
    1717enc = test_key 
    1818solution = getWord(int(index)) 
    19  
    20 if (enc != solution) or (context.portal_captchas.has_key(decrypted_key)) \ 
     19captcha_tool = getToolByName(context, 'portal_captchas') 
     20if (enc != solution) or (captcha_tool.has_key(decrypted_key)) \ 
    2121   or (DateTime().timeTime() - float(date)>3600): 
    2222   state.setError('key', 'Please re-enter validation code.', 'key_required') 
    2323   return state.set(status="failure", portal_status_message = "Please re-enter validation code.") 
    2424else: 
    25     addExpiredKey(context, decrypted_key) 
     25    captcha_tool.addExpiredKey(decrypted_key) 
    2626    return state.set(status="success") 
  • qPloneCaptchas/trunk/skins/plone_captchas/static/captcha_validator.vpy

    r662 r663  
    11from Products.qPloneCaptchas.utils import decrypt, parseKey, \ 
    2      encrypt1, getWord, addExpiredKey 
     2     encrypt1, getWord #, addExpiredKey 
    33from DateTime import DateTime 
    4  
     4from Products.CMFCore.utils import getToolByName 
    55if state.getStatus()=='failure': 
    66    return  state 
     
    1111decrypted_key = decrypt(context.captcha_key, hashkey) 
    1212parsed_key = parseKey(decrypted_key) 
    13   
     13 
    1414index = parsed_key['key'] 
    1515date = parsed_key['date'] 
     
    1818solution = img.title 
    1919enc = encrypt1(test_key) 
    20  
    21 if (enc != solution) or (context.portal_captchas.has_key(decrypted_key)) \ 
     20captcha_tool = getToolByName(context, 'portal_captchas') 
     21if (enc != solution) or (captcha_tool.has_key(decrypted_key)) \ 
    2222   or (DateTime().timeTime() - float(date)>3600): 
    2323   state.setError('key', 'Please re-enter validation code.', 'key_required') 
    2424   return state.set(status="failure", portal_status_message = "Please re-enter validation code.") 
    2525else: 
    26     addExpiredKey(context, decrypted_key) 
     26    captcha_tool.addExpiredKey(decrypted_key) 
    2727    return state.set(status="success") 
  • qPloneCaptchas/trunk/utils.py

    r662 r663  
    1111except: 
    1212    import Crypto 
    13      
     13 
    1414def encrypt1(s): 
    1515    return md5.new(s).hexdigest().upper() 
     
    9292def encrypt(key, s): 
    9393    return toHex(Crypto.new(key).encrypt(s)) 
    94      
     94 
    9595def decrypt(key, s): 
    9696    return Crypto.new(key).decrypt(toStr(s)) 
     
    100100    return {'date': ps.group(1), 'key':ps.group(2)} 
    101101 
     102""" 
    102103def addExpiredKey(context, key): 
    103104    context.portal_captchas.new(key) 
     105""" 
    104106 
    105107def toHex(s): 
     
    110112            hv = '0'+hv 
    111113        lst.append(hv) 
    112      
     114 
    113115    return reduce(lambda x,y:x+y, lst) 
    114116