Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import webapp2
- import cgi
- import codecs
- import re
- def escape_html(s):
- return cgi.escape(s, quote = True)
- signup_form = """ <html>
- <head>
- <title>Signup</title>
- <style type='text/css'>
- .label {
- text-align: right;
- }
- .error {
- color: red;
- }
- </style>
- <h2>Signup</h2>
- <form method="post">
- <br>
- <table>
- <tr>
- <label>
- Name
- </label>
- <td>
- <input type="text" name="username" value="%(username)s">
- </td>
- <td class="error">
- %(username_error)s
- <td>
- </tr>
- <tr>
- <label>
- Password
- </label>
- <td>
- <input type="text" name="password" value="%(password)s">
- </td>
- <td class="error">
- %(password_error)s
- <td>
- </tr>
- <tr>
- <label>
- Verify Password
- </label>
- <td>
- <input type="text" name="verify" value="%(verify)s">
- </td>
- <td class="error">
- %(verify_error)s
- <td>
- </tr>
- <tr>
- <label>
- Email
- </label>
- <td>
- <input type="text" name="email" value="%(email)s">
- </td>
- <td class="error">
- %(email_error)s
- <td>
- </tr>
- <input type="submit">
- </form>
- """
- USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
- PASSWORD_RE = re.compile(r"^.{3,20}$")
- EMAIL_RE = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
- def valid_username(username):
- return USER_RE.match(username)
- def valid_password(password):
- return PASSWORD_RE.match(password)
- def valid_email(email):
- return EMAIL_RE.match(email)
- class MainHandler(webapp2.RequestHandler):
- def write_signup(self, username="", password="", verify="", email="", username_error="", password_error="", verify_error="", email_error=""):
- self.response.out.write(signup_form % {"username": username,
- "password": "",
- "verify": "",
- "email": email,
- "username_error": username_error,
- "password_error": password_error,
- "verify_error": verify_error,
- "email_error": email_error
- })
- def get(self):
- self.write_signup()
- def post(self):
- username = self.request.get('username')
- password = self.request.get('password')
- verify = self.request.get('verify')
- email = self.request.get('email')
- username = valid_username(username)
- password = valid_password(password)
- verify = valid_password(verify)
- email = valid_email(email)
- if (valid_username(username) and valid_password(password) and valid_email(email) and (password == verify)):
- self.redirect('/welcome?username=' + username)
- else:
- if not valid_username(username):
- username_error = "Invalid Username"
- if not valid_password(password):
- password_error = "Invalid Password"
- if password != verify:
- verify_error = "Passwords don't match!"
- if not valid_email(email):
- email_error = "Invalid Email"
- self.write_form(username, password, verify, email, username_error, password_error, verify_error, email_error)
- class WelcomeHandler(webapp2.RequestHandler):
- def write_welcome(self, username=""):
- self.response.out.write("Welcome, %s" % username)
- def get(self):
- self.write_welcome(self.request.get('username'))
- app = webapp2.WSGIApplication([
- ('/', MainHandler), ('/welcome', WelcomeHandler)
- ], debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement