hi i simply upgraded from 1.84.1 to 1.85.1 and get a ticket. i
narrowed down the issue to this:
db.py
....
auth.settings.hmac_key = 'sha512:97655ab8-04d0-4321-
b8fa-84f525fb8fe0' # before define_tables()
db.define_table(
auth.settings.table_user_name,
Field('username', length=128, default='', unique=True),
Field('password', 'password', length=512,
readable=False, label='Password'),
Field('registration_key', length=512,
writable=False, readable=False, default=''),
Field('reset_password_key', length=512,
writable=False, readable=False, default=''),
Field('registration_id', length=512,
writable=False, readable=False, default=''))
custom_auth_table = db[auth.settings.table_user_name] # get the
custom_auth_table
custom_auth_table.username.requires =
IS_NOT_EMPTY(error_message=auth.messages.is_empty)
#custom_auth_table.password.requires = [IS_STRONG(), CRYPT()]
auth.settings.table_user = custom_auth_table # tell auth to use
custom_auth_tabl
auth.define_tables() # creates all needed
tables
.....
test.py (controller)
....
def myLogin():
username = "peter"
password = "pass"
user = auth.login_bare(username, password)
if not user:
return "failed"
else:
return "ok"
...
by invoking the test controllers myLogin function i get :
Traceback (most recent call last):
File "D:\DEV\python\web2py\stable\web2py_src\web2py\gluon
\restricted.py", line 188, in restricted
exec ccode in environment
File "D:/DEV/python/web2py/stable/web2py_src/web2py/applications/
error/controllers/test.py", line 23, in <module>
File "D:\DEV\python\web2py\stable\web2py_src\web2py\gluon
\globals.py", line 96, in <lambda>
self._caller = lambda f: f()
File "D:/DEV/python/web2py/stable/web2py_src/web2py/applications/
error/controllers/test.py", line 15, in iphoneLogin
user = auth.login_bare(username, password)
File "D:\DEV\python\web2py\stable\web2py_src\web2py\gluon\tools.py",
line 1306, in login_bare
user = self.db(table_user[userfield] == username).select().first()
UnboundLocalError: local variable 'userfield' referenced before
assignment
in:
def login_bare(self, username, password):
......
elif 'username' in table_user.fields:
userfield = 'username'
else:
userfield = 'email'
passfield = self.settings.password_field
user = self.db(table_user[userfield] ==
username).select().first() <-------- local variable 'userfield'
referenced before assignment
password = table_user[passfield].validate(password)[0]
if user:
if not user.registration_key and user[passfield] ==
password:
user = Storage(table_user._filter_fields(user,
id=True))
seems to be there is no userfield 'username' anyhow?
interestingly it works with 1.84.1 as expected
for testing here the project if your interested:
http://rapidshare.com/files/420164051/web2py.app.error.w2p