Advertisement
Guest User

Untitled

a guest
Sep 16th, 2014
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import webapp2
  2.  
  3. import cgi
  4.  
  5. import codecs
  6.  
  7. import re
  8.  
  9.  
  10. def escape_html(s):
  11.     return cgi.escape(s, quote = True)
  12.  
  13. signup_form = """ <html>
  14.  <head>
  15.  
  16.    <title>Signup</title>
  17.    <style type='text/css'>
  18.      .label {
  19.        text-align: right;
  20.      }
  21.      .error {
  22.        color: red;
  23.      }
  24.    </style>
  25.  
  26. <h2>Signup</h2>
  27.  
  28. <form method="post">
  29.  
  30.   <br>
  31.   <table>
  32.  
  33.    <tr>
  34.      <label>
  35.       Name
  36.    </label>
  37.    <td>
  38.       <input type="text" name="username" value="%(username)s">
  39.    </td>
  40.    <td class="error">
  41.       %(username_error)s
  42.    <td>
  43.  </tr>
  44.  
  45.  <tr>
  46.    <label>
  47.      Password
  48.    </label>
  49.    <td>
  50.      <input type="text" name="password" value="%(password)s">
  51.    </td>
  52.    <td class="error">
  53.       %(password_error)s
  54.    <td>
  55.  </tr>
  56.  
  57.  <tr>
  58.     <label>
  59.        Verify Password
  60.     </label>
  61.     <td>
  62.        <input type="text" name="verify" value="%(verify)s">
  63.     </td>
  64.     <td class="error">
  65.       %(verify_error)s
  66.    <td>
  67.  </tr>
  68.  
  69.  <tr>
  70.     <label>
  71.        Email
  72.     </label>
  73.     <td>
  74.        <input type="text" name="email" value="%(email)s">
  75.     </td>
  76.     <td class="error">
  77.       %(email_error)s
  78.    <td>
  79.  </tr>
  80.    
  81.  
  82.   <input type="submit">
  83.  
  84. </form>
  85. """
  86.  
  87. USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
  88. PASSWORD_RE = re.compile(r"^.{3,20}$")
  89. EMAIL_RE = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
  90.  
  91.  
  92. def valid_username(username):
  93.   return USER_RE.match(username)
  94.  
  95. def valid_password(password):
  96.   return PASSWORD_RE.match(password)
  97.  
  98. def valid_email(email):
  99.   return EMAIL_RE.match(email)
  100.  
  101.  
  102. class MainHandler(webapp2.RequestHandler):
  103.  
  104.     def write_signup(self, username="", password="", verify="", email="", username_error="", password_error="", verify_error="", email_error=""):
  105.         self.response.out.write(signup_form % {"username": username,
  106.                              "password": "",
  107.                              "verify": "",
  108.                              "email": email,
  109.                              "username_error": username_error,
  110.                              "password_error": password_error,
  111.                              "verify_error": verify_error,
  112.                              "email_error": email_error
  113.                              })
  114.    
  115.     def get(self):
  116.         self.write_signup()
  117.  
  118.     def post(self):
  119.  
  120.         username = self.request.get('username')
  121.         password = self.request.get('password')
  122.         verify = self.request.get('verify')
  123.         email = self.request.get('email')
  124.  
  125.         username = valid_username(username)
  126.         password = valid_password(password)
  127.         verify = valid_password(verify)
  128.         email = valid_email(email)
  129.  
  130.  
  131.         if (valid_username(username) and valid_password(password) and valid_email(email) and (password == verify)):
  132.             self.redirect('/welcome?username=' + username)
  133.  
  134.         else:
  135.             if not valid_username(username):
  136.                 username_error = "Invalid Username"
  137.             if not valid_password(password):
  138.                 password_error = "Invalid Password"
  139.             if password != verify:
  140.                 verify_error = "Passwords don't match!"
  141.             if not valid_email(email):
  142.                 email_error = "Invalid Email"
  143.             self.write_form(username, password, verify, email, username_error, password_error, verify_error, email_error)
  144.            
  145.  
  146. class WelcomeHandler(webapp2.RequestHandler):
  147.  
  148.   def write_welcome(self, username=""):
  149.     self.response.out.write("Welcome, %s" % username)
  150.  
  151.   def get(self):
  152.     self.write_welcome(self.request.get('username'))
  153.  
  154.  
  155.  
  156. app = webapp2.WSGIApplication([
  157.                                ('/', MainHandler), ('/welcome', WelcomeHandler)
  158.                                ], debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement