Guest User

Untitled

a guest
Oct 9th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.62 KB | None | 0 0
  1. import cgi
  2. import re
  3. import webapp2
  4.  
  5. form="""
  6. <!DOCTYPE html>
  7.  
  8. <html>
  9. <head>
  10.   <title>Sign Up</title>
  11.   <style type="text/css">
  12.     .label {text-align: right}
  13.     .error {color: red}
  14.   </style>
  15.  
  16. </head>
  17.  
  18. <body>
  19.   <center> <br><br><br><br>
  20.   <h2>Signup</h2>
  21.   <form method="post">
  22.     <table>
  23.       <tr>
  24.         <td class="label">
  25.           Username
  26.         </td>
  27.         <td>
  28.           <input type="text" name="username" value="%(username)s">
  29.         </td>
  30.         <td class="error">%(user_error)s</td>
  31.       </tr>
  32.  
  33.       <tr>
  34.         <td class="label">
  35.           Password
  36.         </td>
  37.         <td>
  38.           <input type="password" name="password" value="%(password)s">
  39.         </td>
  40.         <td class="error">%(pass_error)s</td>
  41.       </tr>
  42.  
  43.       <tr>
  44.         <td class="label">
  45.           Verify Password
  46.         </td>
  47.         <td>
  48.           <input type="password" name="verify" value="%(verify)s">
  49.         </td>
  50.         <td class="error">%(verify_error)s</td>
  51.       </tr>
  52.  
  53.       <tr>
  54.         <td class="label">
  55.           Email (optional)
  56.         </td>
  57.         <td>
  58.           <input type="text" name="email" value="%(email)s">
  59.         </td>
  60.         <td class="error">%(email_error)s</td>
  61.       </tr>
  62.     </table>
  63.  
  64.     <input type="submit">
  65.   </form>
  66.   </center>
  67. </body>
  68.  
  69. </html>
  70.  
  71. """
  72.  
  73. user_re = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
  74. pass_re = re.compile(r"^.{3,20}$")
  75. email_re = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
  76.  
  77. def escape_html(s):
  78.     return cgi.escape(s, quote = True)
  79.  
  80. def check_username(username):
  81.     return username and user_re.match(username)
  82.  
  83. def check_password(password):
  84.     return password and pass_re.match(password)
  85.  
  86. def check_email(email):
  87.     return not email or email_re.match(email)
  88.  
  89.  
  90. class NewPage(webapp2.RequestHandler):
  91.  
  92.     def write(self, *a, **kw):
  93.         self.response.out.write(*a, **kw)
  94.    
  95.     def get(self):
  96.         params = dict(username="", password="", verify="", email="",user_error="", pass_error="", verify_error="", email_error="")
  97.         self.response.out.write(form % params)
  98.  
  99.     def post(self):
  100.         have_error = False
  101.         username = self.request.get('username')
  102.         password = self.request.get('password')
  103.         verify = self.request.get('verify')
  104.         email = self.request.get('email')
  105.        
  106.         params = dict(username=username, password="", verify="", email=email, user_error="", pass_error="", verify_error="", email_error="")
  107.  
  108.         if not check_username(username):
  109.             params['user_error'] = "That's not a valid username."
  110.             have_error = True
  111.         if not check_password(password):
  112.             params['pass_error'] = "That wasn't a valid password."
  113.             have_error = True
  114.         elif password != verify:
  115.             params['verify_error'] = "Your passwords didn't match."
  116.             have_error = True
  117.         if not check_email(email):
  118.             params['email_error'] = "That's not a valid email."
  119.             have_error = True
  120.         if have_error:
  121.             self.response.out.write(form % params)
  122.         else:
  123.             self.redirect('/welcome?username=' + username)
  124.        
  125.  
  126. class Welcome(webapp2.RequestHandler):
  127.     def get(self):
  128.         username = self.request.get('username')
  129.         if check_username(username):
  130.             self.response.out.write("Welcome {{%s}}!" % username)        
  131.         else:
  132.             self.redirect('/')
  133.  
  134. app = webapp2.WSGIApplication([('/', NewPage),
  135.                                 ('/welcome', Welcome)],
  136.                                 debug=True)
Add Comment
Please, Sign In to add comment