isefire icon

SignUp_App

isefire | PRO | 04/10/14 12:30:14 AM UTC | 0 ⭐ | 277 👁️ | Never ⏰ | []
Python |

4.58 KB

|

None

|

0 👍

/

0 👎

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  signup.py
#  
#  Copyright 2014 [email protected]
#  
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#  
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#  
#  
import webapp2
import re
 
form = """
<!DOCTYPE html>
 
<html>
  <head>
    <title>Sign Up</title>
    <style type="text/css">
      .label {text-align: right}
      .error {color: red}
    </style>
 
  </head>
 
  <body>
    <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">
            <div> %(error0)s </div>
          </td>
        </tr>
 
        <tr>
          <td class="label">
            Password
          </td>
          <td>
            <input type="password" name="password" value="%(password)s">
          </td>
          <td class="error">
            <div> %(error1)s </div>
          </td>
        </tr>
 
        <tr>
          <td class="label">
            Verify Password
          </td>
          <td>
            <input type="password" name="verify" value="%(verify)s">
          </td>
          <td class="error">
            <div> %(error2)s </div>
          </td>
        </tr>
 
        <tr>
          <td class="label">
            Email (optional)
          </td>
          <td>
            <input type="text" name="email" value="%(email)s">
          </td>
          <td class="error">
            <div> %(error3)s </div>
          </td>
        </tr>
      </table>
 
      <input type="submit">
    </form>
  </body>
 
</html>
"""
class MainPage(webapp2.RequestHandler):
    
    error0 = "That&#39;s not a valid username."
    error1 = "That&#39;s not a valid password."
    error2 = "Your passwords didn't match."
    error3 = "That&#39;s not a valid email."
    
    c = ""
    d = ""
    e = ""
    f = ""
    
    def write_form(self, username = "", 
                        password = "", 
                        verify = "", 
                        email = "", 
                        error0 = "", 
                        error1 = "", 
                        error2 = "", 
                        error3 = ""):
                            
        self.response.out.write(form % {"username": username,
                                        "password": password,
                                        "verify": verify,
                                        "email": email,
                                        "error0": error0,
                                        "error1": error1,
                                        "error2": error2,
                                        "error3": error3
                                        })
        
        
    def get(self):
        self.write_form()
        
    def post(self):
        
        
        usrusr = self.valid_usr(self.request.get('username'))
        usrpass = self.valid_pass(self.request.get('password'))
        usrverify = self.usr_verify(self.request.get('password'), self.request.get('verify'))
        usremail = self.valid_email(self.request.get('email'))
        
        if usrusr == 0:
            self.c = self.error0
        if usrpass == 0:
            self.d = self.error1
        if usrverify == 0:
            self.e = self.error2
        if usremail == 0:
            self.f = self.error3
        
        if usrusr+usrpass+usrverify+usremail < 4:
            self.write_form(self.request.get('username'),"","",self.request.get('email'), self.c, self.d, self.e, self.f)
            
        else:
            self.redirect('/welcome?username=%s' % self.request.get('username'))
            
        
 
    def valid_usr(self, username):
        if re.match(r"^[a-zA-Z0-9_-]{3,20}$", username):
            return 1
        else:
            return 0
        
    def valid_pass(self, password):
        if re.match(r"^.{3,20}$", password):
            return 1
        else:
            return 0
    
    def usr_verify(self, password, verify):
        if password == verify:
            return 1
        else:
            return 0
    
    def valid_email(self, email):
        if email == "":
            return 1
        if re.match(r"^[\S]+@[\S]+\.[\S]+$", email):
            return 1
        else:
            return 0
        
            
class WelcomeHandler(webapp2.RequestHandler):
    def get(self):
        username = self.request.get("username")
        self.response.out.write("Welcome, %s!" % username) 
 
 
application = webapp2.WSGIApplication([('/', MainPage),
                                        ('/welcome', WelcomeHandler)],debug=True)

Comments