import webapp2
import re
USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
pass_re = re.compile(r"^.{3,20}$")
email_re = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
form="""
<form method="post">
<table>
<label>
Username :
<input type="text" name="username" value="%(username)s">
<font color="red">%(error_username)s</font>
</label>
<br>
<label>
Password :
<input type="password" name="password">
<font color="red">%(error_password)s</font>
</label>
<br>
<label>
Verify Password :
<input type="password" name="verify">
<font color="red">%(match_error)s</font>
</label>
<br>
<label>
Email(optional) :
<input type="text" name="email" value="%(email)s">
<font color="red">%(email_error)s</font>
<label>
<br>
</table>
<input type="submit">
</form>
"""
class MainHandler(webapp2.RequestHandler):
def get(self):
self.write_form()
def write_form(self,user="",error_user="",error_pass="",error_verify="",mail="",error_mail=""):
self.response.out.write(form%{"username":user,
"error_username":error_user,
"error_password":error_pass,
"match_error":error_verify,
"email":mail,
"email_error":error_mail})
def valid_username(self,user):
return USER_RE.match(user)
def valid_password(self,password):
return pass_re.match(password)
def valid_email(self,mail):
if not mail:
return True
else:
return email_re.match(mail)
def match(self,p,v):
if p==v :
return True
return False
def post(self):
user=self.request.get('username')
pas=self.request.get('password')
veri=self.request.get('verify')
mail=self.request.get('email')
username=self.valid_username(user)
password=self.valid_password(pas)
verify=self.match(veri,pas)
email=self.valid_email(mail)
if not username :
error_user="That's not a valid username."
else:
error_user=""
if not password :
error_pass="That wasn't a valid password."
else:
error_pass=""
if password and not verify:
error_verify="Your passwords didn't match."
else:
error_verify=""
if not email:
error_mail="That's not a valid email."
else:
error_mail=""
if not(username) or not(email) or not(password) or not(verify):
self.write_form(user,error_user,error_pass,error_verify,mail,error_mail)
else:
self.redirect('/welcome')
class welcomeHandler(webapp2.RequestHandler):
def get(self):
username=self.request.get('username')
self.response.out.write("Welcome "+username)
app = webapp2.WSGIApplication([
('/', MainHandler),('/welcome',welcomeHandler)], debug=True)