Yes, of course. This is my ticket:

Error ticket for "dianaappv1" Ticket ID 

127.0.0.1.2012-12-19.18-24-12.5d2b292c-7e9a-4281-a9f7-bb9aa17bbd0c
<type 'exceptions.ValueError'> unsupported hash type |pbkdf2(1000,20,sha512) 
Versión  web2py™ (2, 2, 1, datetime.datetime(2012, 10, 21, 16, 57, 4), 
'stable')  Python Python 2.7.1: /usr/bin/python  Traceback 

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.

Traceback (most recent call last):
  File "/Applications/web2py/gluon/restricted.py", line 212, in restricted
    exec ccode in environment
  File "/Applications/web2py/applications/dianaappv1/controllers/default.py" 
<https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py>, 
line 101, in <module>
  File "/Applications/web2py/gluon/globals.py", line 188, in <lambda>
    self._caller = lambda f: f()
  File "/Applications/web2py/applications/dianaappv1/controllers/default.py" 
<https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py>, 
line 27, in public_call
    return servicios_publicos()
  File "/Applications/web2py/gluon/tools.py", line 4387, in __call__
    return self.serve_json(request.args[1:])
  File "/Applications/web2py/gluon/tools.py", line 4197, in serve_json
    s = universal_caller(self.json_procedures[args[0]], *args[1:], **d)
  File "/Applications/web2py/gluon/tools.py", line 3889, in universal_caller
    return f(**arg_dict)
  File "/Applications/web2py/applications/dianaappv1/controllers/default.py" 
<https://127.0.0.1:8000/admin/default/edit/dianaappv1/controllers/default.py>, 
line 65, in login
    user = auth.login_bare(usuario, password)
  File "/Applications/web2py/gluon/tools.py", line 1789, in login_bare
    if not user.registration_key and password == user[passfield]:
  File "/Applications/web2py/gluon/validators.py", line 2636, in __eq__
    h = simple_hash(self.password, key, salt, digest_alg)
  File "/Applications/web2py/gluon/utils.py", line 74, in simple_hash
    h = hashlib.new(digest_alg)
  File 
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 121, in __hash_new
    return __get_builtin_constructor(name)(string)
  File 
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 88, in __get_builtin_constructor
    raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type |pbkdf2(1000,20,sha512)

 Error snapshot [image: help]  

<type 'exceptions.ValueError'>(unsupported hash type 
|pbkdf2(1000,20,sha512)) 

inspect attributes 
 Frames 
   
   -  
   
   *File /Applications/web2py/gluon/restricted.py in restricted at line 212* 
   código argumentos variables 
    -  
   
   *File 
   /Applications/web2py/applications/dianaappv1/controllers/default.py in 
   <module> at line 101* código argumentos variables 
    -  
   
   *File /Applications/web2py/gluon/globals.py in <lambda> at line 188* 
   código argumentos variables 
    -  
   
   *File 
   /Applications/web2py/applications/dianaappv1/controllers/default.py in 
   public_call at line 27* código argumentos variables 
    -  
   
   *File /Applications/web2py/gluon/tools.py in __call__ at line 4387* 
   código argumentos variables 
    -  
   
   *File /Applications/web2py/gluon/tools.py in serve_json at line 4197* 
   código argumentos variables 
    -  
   
   *File /Applications/web2py/gluon/tools.py in universal_caller at line 
   3889* código argumentos variables 
    -  
   
   *File 
   /Applications/web2py/applications/dianaappv1/controllers/default.py in 
   login at line 65* código argumentos variables 
    -  
   
   *File /Applications/web2py/gluon/tools.py in login_bare at line 1789* 
   código argumentos variables 
    -  
   
   *File /Applications/web2py/gluon/validators.py in __eq__ at line 2636* 
   código argumentos variables 
    -  
   
   *File /Applications/web2py/gluon/utils.py in simple_hash at line 74* 
   código argumentos variables 
    -  
   
   *File 
   
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py
 
   in __hash_new at line 121* código argumentos variables 
    -  
   
   *File 
   
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py
 
   in __get_builtin_constructor at line 88* código argumentos variables 
    Function argument list 
   
   (name='|pbkdf2(1000,20,sha512)')
    Code listing 
   
   83.
   84.
   85.
   86.
   87.
   88.
   
   89.
   90.
   91.
   92.
   
           if bs == '512':
               return _sha512.sha512
           elif bs == '384':
               return _sha512.sha384
   
       raise ValueError('unsupported hash type %s' % name)
   
   
   
   def __get_openssl_constructor(name):
       try:
   
    Variables  name '|pbkdf2(1000,20,sha512)'  builtinValueError <type 
   'exceptions.ValueError'>  
    
 Context 

locals request session response 
 In file: 
/Applications/web2py/applications/dianaappv1/controllers/default.py 

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.

# -*- coding: utf-8 -*-
# this file is released under public domain and you can use without limitations

#########################################################################
## This is a samples controller
## - index is the default action of any application
## - user is required for authentication and authorization
## - download is for downloading files uploaded in the db (does streaming)
## - call exposes all registered services (none by default)
#########################################################################
servicios_publicos=Service()
servicios_privados=Service()

def random_password():
    import string
    import random
    password = ''
    specials=r'!...@#$*?'
    for i in range(0,2):
        password += random.choice(string.lowercase)
        password += random.choice(string.uppercase)
        password += random.choice(string.digits)
#        password += random.choice(specials)
    return ''.join(random.sample(password,len(password)))

def public_call(): 
    return servicios_publicos()

@auth.requires_login()
def private_call(): 
    return servicios_privados()

@servicios_publicos.json
def registra(usuario, email, password):
    respuesta = {}
    estado = 'OK'
    mensaje = ''
    tipoError = 0
    #Comprueba si hay otro usuario con el mismo nombre
    if db(db.auth_user.username == usuario).count() != 0:
        estado = 'Error'
        tipoError = 1
    #Comprueba si hay otro usuario con el mismo email
    if db(db.auth_user.email == email).count() != 0:
        estado = 'Error'
        tipoError = tipoError + 2
    #Registrar
    if estado == 'OK':
        db.auth_user.insert(username=usuario, email=email, 
password=db.auth_user.password.validate(password)) 
        mensaje = 'El registro se ha realizado correctamente.'
    else:
        if tipoError == 1:
            mensaje = 'El usuario ya existe.'
        elif tipoError == 2:
            mensaje = 'El email ya existe.'
        else:
            mensaje = 'El usuario y el email ya existen.'
    respuesta['estado'] = estado    
    respuesta['mensaje'] = mensaje
    return respuesta

@servicios_publicos.json
def login(usuario, password):
    respuesta = {}
    user = auth.login_bare(usuario, password)
    if not user:
        respuesta['estado'] = 'Error'    
        respuesta['mensaje'] = 'Nombre de usuario o contraseña incorrecta'
    else:
        respuesta['estado'] = 'OK'    
        respuesta['mensaje'] = 'Login correcto'
    return respuesta

@servicios_publicos.json
def recupera_contrasenya(usuario):
    nueva_contrasenya = random_password()
    respuesta = {}
    fila = db(db.auth_user.username == usuario)
    if fila.count() == 0:
        respuesta['estado'] = 'Error'    
        respuesta['mensaje'] = 'No existe el usuario'
    else:
        fila.update(password=db.auth_user.password.validate(nueva_contrasenya))
        datosFila = fila.select()
        destino = datosFila[0].email
        enviado = mail.send(to=[destino],
          subject='Recuperación de contraseña',
          message='Se te ha creado una nueva contraseña. Es esta ' + 
nueva_contrasenya)
        if enviado:
            respuesta['estado'] = 'OK'    
            respuesta['mensaje'] = 'Se ha enviado la contraseña a su correo 
electrónico.'
        else:
            respuesta['estado'] = 'Error'    
            respuesta['mensaje'] = 'La contraseña no se ha podido enviar, 
reinténtelo más tarde'
    return respuesta

#@servicios_privados.json
#def metodo_privado(): 
#    return 'private'

response <https://127.0.0.1:8000/examples/global/vars/response>._vars=response 
<https://127.0.0.1:8000/examples/global/vars/response>._caller(public_call)



El miércoles, 19 de diciembre de 2012 18:09:25 UTC+1, Massimo Di Pierro 
escribió:
>
> Can you please show me the complete traceback?
> I cannot reproduce this and I this error is not generated from a web2py 
> function.
>
> On Tuesday, 18 December 2012 11:11:51 UTC-6, Massimo Di Pierro wrote:
>>
>> Can I see you models? Are you changing the validator for 
>> db.auth_user.password?
>> Your error says:
>>
>> <type 'exceptions.ValueError'> unsupported hash type 
>> |pbkdf2(1000,20,sha512)
>>
>> I do not understand where | in  |pbkdf2 would come from.
>>
>>
>> On Tuesday, 18 December 2012 09:33:12 UTC-6, Wonton wrote:
>>>
>>> Hi Massimo!!
>>>
>>> I'm using version 2.2.1 (2012-10-21 16:57:04) stable. I dowloaded it 
>>> last week.
>>>
>>> El martes, 18 de diciembre de 2012 16:26:29 UTC+1, Massimo Di Pierro 
>>> escribió:
>>>>
>>>> Which web2py version? The error suggests you are using an older web2py 
>>>> version with newly created database of records.
>>>>
>>>> Massimo
>>>>
>>>> On Monday, 17 December 2012 14:59:02 UTC-6, Wonton wrote:
>>>>>
>>>>> Hello everyone,
>>>>>
>>>>> I'm developing a backend site with web2py. I have 2 web services, one 
>>>>> to register a user and a second one to login the user.
>>>>> This is the first one:
>>>>>
>>>>> def register(user, email, password):
>>>>>      db.auth_user.insert(username=user, email=email, 
>>>>> password=db.auth_user.password.validate(password)) 
>>>>>     ...
>>>>>      return 'OK'
>>>>>
>>>>> It's working ok and the users are created without problem.
>>>>>
>>>>> This is the second one:
>>>>>
>>>>> def login(user, password):
>>>>>     response = auth.login_bare(user, password)
>>>>>      if not response:
>>>>>         message = 'Error'
>>>>>     else:
>>>>>          message = 'OK'
>>>>>    return message
>>>>>
>>>>> With this service I have the following error:
>>>>> <type 'exceptions.ValueError'> unsupported hash type 
>>>>> |pbkdf2(1000,20,sha512)
>>>>>
>>>>> I've tried to find any solution to this problem without success.
>>>>>
>>>>> Any of you has any idea of what is happening?
>>>>>
>>>>> Thank you very much and kind regards!
>>>>>
>>>>> Wonton
>>>>>
>>>>

-- 



Reply via email to