isefire

SignUp_App

Apr 9th, 2014
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.58 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. #  signup.py
  5. #  
  6. #  Copyright 2014 [email protected]
  7. #  
  8. #  This program is free software; you can redistribute it and/or modify
  9. #  it under the terms of the GNU General Public License as published by
  10. #  the Free Software Foundation; either version 2 of the License, or
  11. #  (at your option) any later version.
  12. #  
  13. #  This program is distributed in the hope that it will be useful,
  14. #  but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. #  GNU General Public License for more details.
  17. #  
  18. #  You should have received a copy of the GNU General Public License
  19. #  along with this program; if not, write to the Free Software
  20. #  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  21. #  MA 02110-1301, USA.
  22. #  
  23. #  
  24. import webapp2
  25. import re
  26.  
  27. form = """
  28. <!DOCTYPE html>
  29.  
  30. <html>
  31.  <head>
  32.    <title>Sign Up</title>
  33.    <style type="text/css">
  34.      .label {text-align: right}
  35.      .error {color: red}
  36.    </style>
  37.  
  38.  </head>
  39.  
  40.  <body>
  41.    <h2>Signup</h2>
  42.    <form method="post">
  43.      <table>
  44.        <tr>
  45.          <td class="label">
  46.            Username
  47.          </td>
  48.          <td>
  49.            <input type="text" name="username" value="%(username)s">
  50.          </td>
  51.          <td class="error">
  52.            <div> %(error0)s </div>
  53.          </td>
  54.        </tr>
  55.  
  56.        <tr>
  57.          <td class="label">
  58.            Password
  59.          </td>
  60.          <td>
  61.            <input type="password" name="password" value="%(password)s">
  62.          </td>
  63.          <td class="error">
  64.            <div> %(error1)s </div>
  65.          </td>
  66.        </tr>
  67.  
  68.        <tr>
  69.          <td class="label">
  70.            Verify Password
  71.          </td>
  72.          <td>
  73.            <input type="password" name="verify" value="%(verify)s">
  74.          </td>
  75.          <td class="error">
  76.            <div> %(error2)s </div>
  77.          </td>
  78.        </tr>
  79.  
  80.        <tr>
  81.          <td class="label">
  82.            Email (optional)
  83.          </td>
  84.          <td>
  85.            <input type="text" name="email" value="%(email)s">
  86.          </td>
  87.          <td class="error">
  88.            <div> %(error3)s </div>
  89.          </td>
  90.        </tr>
  91.      </table>
  92.  
  93.      <input type="submit">
  94.    </form>
  95.  </body>
  96.  
  97. </html>
  98. """
  99. class MainPage(webapp2.RequestHandler):
  100.    
  101.     error0 = "That&#39;s not a valid username."
  102.     error1 = "That&#39;s not a valid password."
  103.     error2 = "Your passwords didn't match."
  104.     error3 = "That&#39;s not a valid email."
  105.    
  106.     c = ""
  107.     d = ""
  108.     e = ""
  109.     f = ""
  110.    
  111.     def write_form(self, username = "",
  112.                         password = "",
  113.                         verify = "",
  114.                         email = "",
  115.                         error0 = "",
  116.                         error1 = "",
  117.                         error2 = "",
  118.                         error3 = ""):
  119.                            
  120.         self.response.out.write(form % {"username": username,
  121.                                         "password": password,
  122.                                         "verify": verify,
  123.                                         "email": email,
  124.                                         "error0": error0,
  125.                                         "error1": error1,
  126.                                         "error2": error2,
  127.                                         "error3": error3
  128.                                         })
  129.        
  130.        
  131.     def get(self):
  132.         self.write_form()
  133.        
  134.     def post(self):
  135.        
  136.        
  137.         usrusr = self.valid_usr(self.request.get('username'))
  138.         usrpass = self.valid_pass(self.request.get('password'))
  139.         usrverify = self.usr_verify(self.request.get('password'), self.request.get('verify'))
  140.         usremail = self.valid_email(self.request.get('email'))
  141.        
  142.         if usrusr == 0:
  143.             self.c = self.error0
  144.         if usrpass == 0:
  145.             self.d = self.error1
  146.         if usrverify == 0:
  147.             self.e = self.error2
  148.         if usremail == 0:
  149.             self.f = self.error3
  150.        
  151.         if usrusr+usrpass+usrverify+usremail < 4:
  152.             self.write_form(self.request.get('username'),"","",self.request.get('email'), self.c, self.d, self.e, self.f)
  153.            
  154.         else:
  155.             self.redirect('/welcome?username=%s' % self.request.get('username'))
  156.            
  157.        
  158.  
  159.     def valid_usr(self, username):
  160.         if re.match(r"^[a-zA-Z0-9_-]{3,20}$", username):
  161.             return 1
  162.         else:
  163.             return 0
  164.        
  165.     def valid_pass(self, password):
  166.         if re.match(r"^.{3,20}$", password):
  167.             return 1
  168.         else:
  169.             return 0
  170.    
  171.     def usr_verify(self, password, verify):
  172.         if password == verify:
  173.             return 1
  174.         else:
  175.             return 0
  176.    
  177.     def valid_email(self, email):
  178.         if email == "":
  179.             return 1
  180.         if re.match(r"^[\S]+@[\S]+\.[\S]+$", email):
  181.             return 1
  182.         else:
  183.             return 0
  184.        
  185.            
  186. class WelcomeHandler(webapp2.RequestHandler):
  187.     def get(self):
  188.         username = self.request.get("username")
  189.         self.response.out.write("Welcome, %s!" % username)
  190.  
  191.  
  192. application = webapp2.WSGIApplication([('/', MainPage),
  193.                                         ('/welcome', WelcomeHandler)],debug=True)
Advertisement
Add Comment
Please, Sign In to add comment