#!/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)
Comments