2 # -*- coding: utf-8 -*-
5 This controller implements:
14 from utils import authenticated, templated, flash
16 import gecoc.gecolib as gecolib
20 vname = form.regexp("\w*$", 'Debe ser Alphanumerico')
21 vpass = form.regexp(r".{3,20}", 'Debe estar entre 3 y 20 caracteres')
23 form_login = form.Form(
24 form.Textbox("username", vname, description="Usuario"),
25 form.Password("password", vpass, description="Contraseña"),
28 def generate_reg_form(op1, op2):
30 form.Textbox("rusername", vname, description="Usuario"),
31 form.Password("rpassword", vpass, description="Contraseña"),
32 form.Password("password2", description="Confirmación de contraseña"),
33 form.Textbox("captcha", description="captcha %s + %s = " % (op1, op2)),
35 form.Validator("Las contraseñas no coinciden",
36 lambda i: i.rpassword == i.password2),
37 form.Validator("No sabes sumar? Usa la calculadora si eso...",
38 lambda i: int(i.captcha) == op1 + op2),
43 render = web.template.render('templates')
45 @templated(css='style',
46 js='jquery-1.3.1.min login',
47 title='GECO Web Client')
50 op1 = random.randint(1,10)
51 op2 = random.randint(1,10)
52 rform = generate_reg_form(op1, op2)
53 session.rform = (op1, op2)
55 return self.render.login(lform, rform)
57 @templated(css='style',
58 js='jquery-1.3.1.min login',
59 title='GECO Web Client')
62 if not lform.validates():
63 return self.render.login(form_login=lform)
66 name = values['username']
67 pwd = values['password']
69 gso = gecolib.GSO(xmlrpc_server=web.SERVER)
73 session.username = name
74 session.gso = gso.cookie
76 flash("Usuario o contraseña incorrectos", "error")
77 raise web.seeother('/login')
79 raise web.seeother('/index')
84 username = session.get('username', '')
86 cookie = session.get('gso', '')
87 gso = gecolib.GSO(xmlrpc_server=web.SERVER, cookie=cookie)
90 flash("Usuario desautenticado")
91 raise web.seeother('/index')
94 render = web.template.render('templates')
96 @templated(css='style', title='GECO Web Client')
98 rform = generate_reg_form(*session.rform)
100 raise web.seeother('/login')
102 if not rform.validates():
103 return self.render.login(form_reg=rform)
105 gso = gecolib.GSO(xmlrpc_server=web.SERVER)
108 name = values['rusername']
109 pwd = values['rpassword']
111 if gso.check_user_name(name):
112 errors = [u"%s no está disponible" % name]
113 flash(errors, 'error')
114 return self.render.login(form_reg=rform)
116 gso.register(name, pwd)
118 flash([u"Registrado con exito %s" % name])
119 raise web.seeother("/login")