Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import web
- from web import form
- urls=("/login","login",
- "/reg","registr",
- "/logout","logout",
- "/","userinfo",
- "/edit","edit_info"
- )
- login_form=form.Form(
- form.Textbox("email",description="Email"),
- form.Password("password", description="Password"),
- form.Button("Sign in",type="submit",description="Sign in")
- )
- valid_name=form.regexp(".+","Type your name")
- valid_pass=form.regexp(".{4,12}","password must be from 4 to 12 characters")
- valid_email=form.regexp("^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,4}$","Incorrect email")
- reg_form=form.Form(form.Textbox("name",valid_name,description="Name"),
- form.Textbox("email",valid_email,description="Email"),
- form.Password("passw",valid_pass,description="Password"),
- form.Password("passw2",description="Repeat Password"),
- form.Button("Proceed",type="submit",description="Sign up"),
- validators = [form.Validator("Password doesn't match", lambda x: x.passw == x.passw2)]
- )
- db=web.database(dbn="sqlite",db="webpydb")
- render = web.template.render('templates')
- def login_required(func):
- def decor(*args,**kargs):
- if session.logged:
- return func(*args,**kargs)
- else:
- web.seeother("/login")
- return decor
- class login:
- def GET(self):
- f=login_form()
- return render.login(f)
- def POST(self):
- f=login_form()
- email=web.input().email
- passw=web.input().password
- users=db.select('Users',limit=1,where='Email=$email and Pass=$passw',vars=locals())
- error_msg="Wrong email or password"
- err=render.error(error_msg)
- try:
- user=users[0]
- session.name = user.Name
- session.email=user.Email
- session.logged = True
- except IndexError:
- return render.login(f,unicode(err))
- if session.logged==True:
- web.seeother("/")
- class registr:
- def GET(self):
- f=reg_form()
- return render.reg(f)
- def POST(self):
- f=reg_form()
- if f.validates():
- name=f.d.name
- email=f.d.email
- passw=f.d.passw
- exist=False
- for x in db.select("Users"):
- if x.Email==email:
- exist=True
- if exist:
- err=render.error("User with such email already exist")
- return render.reg(f,unicode(err))
- else:
- db.insert("Users",Name=name,Email=email,Pass=passw)
- web.seeother("/")
- else:
- return render.reg(f)
- class logout:
- @login_required
- def GET(self):
- session.kill()
- web.seeother("/login")
- class userinfo:
- @login_required
- def GET(self):
- greeting="Hello "+session.name
- mail=session.email
- t=db.select("Users",limit=1,what="Name,Pass",where="Email=$mail",vars=locals()).list()
- name=t[0].Name
- pasw=t[0].Pass
- print name,pasw
- return render.info(greeting,name,mail,pasw)
- class edit_info:
- @login_required
- def GET(self):
- f=reg_form()
- return render.reg(f)
- def POST(self):
- f=reg_form()
- if f.validates():
- name=f.d.name
- email=f.d.email
- passw=f.d.passw
- old=session.email
- db.update("users",where="Email=$old",Name=name,Email=email,Pass=passw,vars=locals())
- session.name=name
- session.email=email
- web.seeother("/")
- else:
- return render.reg(f)
- app=web.application(urls,globals())
- store=web.session.DiskStore('sessions')
- if web.config.get('_session') is None:
- session = web.session.Session(app,store , initializer={'logged':False,'name':"some",'email':"aaa@aaa.aaa"})
- web.config._session = session
- else:
- session=web.config._session
- application=app.wsgifunc()
Add Comment
Please, Sign In to add comment