Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import cgi
- import re
- import webapp2
- form="""
- <!DOCTYPE html>
- <html>
- <head>
- <title>Sign Up</title>
- <style type="text/css">
- .label {text-align: right}
- .error {color: red}
- </style>
- </head>
- <body>
- <center> <br><br><br><br>
- <h2>Signup</h2>
- <form method="post">
- <table>
- <tr>
- <td class="label">
- Username
- </td>
- <td>
- <input type="text" name="username" value="%(username)s">
- </td>
- <td class="error">%(user_error)s</td>
- </tr>
- <tr>
- <td class="label">
- Password
- </td>
- <td>
- <input type="password" name="password" value="%(password)s">
- </td>
- <td class="error">%(pass_error)s</td>
- </tr>
- <tr>
- <td class="label">
- Verify Password
- </td>
- <td>
- <input type="password" name="verify" value="%(verify)s">
- </td>
- <td class="error">%(verify_error)s</td>
- </tr>
- <tr>
- <td class="label">
- Email (optional)
- </td>
- <td>
- <input type="text" name="email" value="%(email)s">
- </td>
- <td class="error">%(email_error)s</td>
- </tr>
- </table>
- <input type="submit">
- </form>
- </center>
- </body>
- </html>
- """
- 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]+$")
- def escape_html(s):
- return cgi.escape(s, quote = True)
- def check_username(username):
- return username and user_re.match(username)
- def check_password(password):
- return password and pass_re.match(password)
- def check_email(email):
- return not email or email_re.match(email)
- class NewPage(webapp2.RequestHandler):
- def write(self, *a, **kw):
- self.response.out.write(*a, **kw)
- def get(self):
- params = dict(username="", password="", verify="", email="",user_error="", pass_error="", verify_error="", email_error="")
- self.response.out.write(form % params)
- def post(self):
- have_error = False
- username = self.request.get('username')
- password = self.request.get('password')
- verify = self.request.get('verify')
- email = self.request.get('email')
- params = dict(username=username, password="", verify="", email=email, user_error="", pass_error="", verify_error="", email_error="")
- if not check_username(username):
- params['user_error'] = "That's not a valid username."
- have_error = True
- if not check_password(password):
- params['pass_error'] = "That wasn't a valid password."
- have_error = True
- elif password != verify:
- params['verify_error'] = "Your passwords didn't match."
- have_error = True
- if not check_email(email):
- params['email_error'] = "That's not a valid email."
- have_error = True
- if have_error:
- self.response.out.write(form % params)
- else:
- self.redirect('/welcome?username=' + username)
- class Welcome(webapp2.RequestHandler):
- def get(self):
- username = self.request.get('username')
- if check_username(username):
- self.response.out.write("Welcome {{%s}}!" % username)
- else:
- self.redirect('/')
- app = webapp2.WSGIApplication([('/', NewPage),
- ('/welcome', Welcome)],
- debug=True)
Add Comment
Please, Sign In to add comment