[Zope] Python Generators and Zope question
Palermo, Tom
TPalermo at constellagroup.com
Thu Apr 20 10:52:00 EDT 2006
All,
I have a site that uses CookieCrumbler for user login. I need to track how
many incorrect login attempts a user makes. I am trying to use a python
generator to do this but it makes Zope hang when I try to do an invalid
login (eg. no password or incorrect password). Here's a snippet:
def make_counter(x):
while 1:
yield x
x = x + 1
counter = make_counter(1)
security.declarePublic('getUnauthorizedURL')
def getUnauthorizedURL(self):
'''
Redirects to the login page.
'''
req = self.REQUEST
resp = req['RESPONSE']
attempt = getattr(req, '_cookie_auth', ATTEMPT_NONE)
if attempt == ATTEMPT_NONE:
# An anonymous user was denied access to something.
page_id = self.auto_login_page
retry = ''
elif attempt == ATTEMPT_LOGIN:
# The login attempt failed. Try again.
page_id = self.auto_login_page
#retry = '1'
retry = counter.next()
I added the make_counter function. It seems the culprit is the retry =
counter.next() bit. I tried doing this same thing with the make_counter
function in an External method and then calling it from a python script like
so:
counter = context.make_counter(1)
return counter.next()
In that case, an unauthorized exception is raised complaining about next. I
can however, just return the counter which gives me <generator object at
0xb48d56cc>. Am I calling the next method incorrectly or is there something
else I'm missing or being dumb about?
Thanks,
Tom Palermo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope/attachments/20060420/16343863/attachment.htm
More information about the Zope
mailing list