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