Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/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's not a valid username."
- error1 = "That's not a valid password."
- error2 = "Your passwords didn't match."
- error3 = "That'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)
Advertisement
Add Comment
Please, Sign In to add comment