Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import webapp2
- form = """
- <form method = "post">
- <div> Signup </div>
- <br>
- <br
- <div>
- <label> Username
- <input type="textarea" name="username" value="%(username)s">
- </label> <span style="color: red">%(us_error)s</span>
- </div>
- <div>
- <label> Password
- <input type="textarea" name="password" value="">
- </label> <span style="color: red">%(pw_error)s</span>
- </div>
- <div>
- <label> Verify Password
- <input type="textarea" name="verify" value="">
- </label> <span style="color: red">%(vpw_error)s</span>
- </div>
- <div>
- <label> Email (optional)
- <input type="textarea" name="email" value="%(email)s">
- </label> <span style="color: red">%(em_error)s</span>
- </div>
- <br>
- <input type="submit">
- </form>
- """
- import cgi
- def escape_html(s):
- return cgi.escape(s, quote = True)
- import re
- USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
- USER_PW = re.compile(r"^.{3,20}$")
- USER_EM = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
- def valid_username(username):
- return USER_RE.match(username)
- def valid_password(password):
- return USER_PW.match(password)
- def valid_email(email):
- return USER_EM.match(email)
- class MainHandler(webapp2.RequestHandler):
- def write_form(self, us_error="", pw_error="", vpw_error="", em_error="", username="", email=""):
- self.response.write(form % {"us_error": us_error,
- "pw_error": pw_error,
- "vpw_error": vpw_error,
- "em_error": em_error,
- "username": username,
- "email": email})
- def get(self):
- self.write_form()
- def post(self):
- user_name = escape_html(self.request.get('username'))
- pass_word = escape_html(self.request.get('password'))
- vpass_word = escape_html(self.request.get('verify'))
- e_mail = escape_html(self.request.get('email'))
- username = valid_username(user_name)
- password = valid_password(pass_word)
- email = valid_email(e_mail)
- us_error = ""
- pw_error = ""
- vpw_error = ""
- em_error = ""
- if username == None:
- username = user_name
- if email == None:
- email = e_mail
- if not username:
- us_error = "That's not a valid username."
- if not password:
- pw_error = "That's not a valid password."
- if pass_word != vpass_word:
- vpw_error = "Your passwords didn't match."
- if e_mail:
- if not email:
- em_error = "That's not a valid email."
- self.write_form(us_error, pw_error, vpw_error, em_error, user_name, e_mail)
- if not (us_error or pw_error or vpw_error):
- self.redirect("/welcome")
- class WelcomeHandler(webapp2.RequestHandler):
- def get(self):
- user = self.request.get('username')
- self.response.write("Welcome" + "," + " " + user)
- app = webapp2.WSGIApplication([('/', MainHandler), ("/welcome", WelcomeHandler)], debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement