json.loads() returns a unicode string which *

db.auth_user.password.validate() doesn't like -- try converting your 
password variable to a string first as follows:
*

*

password = str(db.auth_user.password.validate(str(password))[0])


Don't forget to str() the result of the 

db.auth_user.password.validate()[0] too since it returns an instance 
of gluon.validators.LazyCrypt and keep the passwords 4+ in length

.


HTH, D


*
On Tuesday, May 7, 2013 12:42:58 PM UTC-4, Stan Lexow wrote:
>
> *
>
>
> Inserting a new user programmatically with web2py, v2.4.6
>
> I apologize for the re post.  I have read many threads on this subject, 
> including several from Massimo, but I am still having trouble inserting a 
> new user record.
>
> I just upgraded web2py to 2.4.6 from version 2012/3/4 1.99.7. The insert 
> was working before the upgrade.
>
> When I execute the following code I receive the traceback below
>
> code fragment:
>
> ...
>
> password = json.loads(request.vars.password).decode('unicode-escape')
>
> password = str(db.auth_user.password.validate(password)[0])
>
> ...
>
> db.auth_user.insert(first_name=first_name, last_name=last_name, 
> email=email, password=password)
>
> ...
>
> The above code was tried with and without  " **.decode('unicode-escape') 
> " 
>
>
> Error: 
>
> Traceback (most recent call last):
>
> File 
> "/Users/foo/Desktop/dev/web2py/applications/init/controllers/default.py", 
> line 599, in manageUsers
>
>
> password=str(db.auth_user.password.validate(password)[0]).decode('unicode-escape'))
>
> File "/Users/foo/Desktop/dev/web2py/gluon/validators.py", line 2760, in str
>
> hashed = simple_hash(self.password, key, salt, digest_alg)
>
> File "/Users/foo/Desktop/dev/web2py/gluon/utils.py", line 87, in 
> simple_hash
>
> int(keylen), get_digest(alg))
>
> File "/Users/foo/Desktop/dev/web2py/gluon/contrib/pbkdf2.py", line 55, in 
> pbkdf2_hex
>
> return pbkdf2_bin(data, salt, iterations, keylen, hashfunc).encode('hex')
>
> File "/Users/foo/Desktop/dev/web2py/gluon/contrib/pbkdf2.py", line 65, in 
> pbkdf2_bin
>
> mac = hmac.new(data, None, hashfunc)
>
> File 
> "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hmac.py", 
> line 133, in new
>
> return HMAC(key, msg, digestmod)
>
> File 
> "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hmac.py", 
> line 72, in init
>
> self.outer.update(key.translate(trans_5C))
>
> TypeError: character mapping must return integer, None or unicode
>
>
> Important: When I execute the following code from the web2py shell using 
> “ python web2py.py -S init -M “, I do not get an error and the insert 
> works as expected.
>
> email = 'first...@email.com <javascript:>'
>
> first_name='first'
>
> last_name=’last'
>
> password='flast123'
>
>
>               # web2py database portion...
>
> db.auth_user.insert(first_name=first_name, last_name=last_name, 
> email=email,
>
>
>                   
> password=str(db.auth_user.password.validate(‘mySecretPassword')[0]))
>
> Any insight is greatly appreciated!!
>
> Thanks in advance,
>
> Stan
> *
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to