Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import wsgiref.handlers
- from google.appengine.ext import webapp
- from google.appengine.ext import db
- from Cheetah.Template import Template
- from util.sessions import Session
- import datetime
- import os
- # Get full path name for a file
- def render(filename):
- try:
- path = os.path.join(os.path.dirname(__file__), 'Templates/%s' % filename)
- return Template(file=path)
- except:
- pass
- # Verify Username availability
- def checkPresence(name):
- alldata = Users.all()
- alldata.filter('_username =', name)
- filtereddata = alldata.fetch(limit=1)
- for c in filtereddata:
- if c is not None:
- return True
- else:
- return False
- # Verify Username/Password authenticity
- def checkCredential(username_, password_):
- alldata = Users.all()
- alldata.filter('_username =', username_)
- filtereddata = alldata.fetch(limit=1)
- for c in filtereddata:
- if c._password == password_:
- return True
- else:
- return False
- break
- # DB Model to store users information
- class Users(db.Model):
- _salutation = db.StringProperty(required=True)
- _address = db.StringProperty(required=True)
- _fullname = db.StringProperty(required=True)
- _username = db.StringProperty(required=True)
- _password = db.StringProperty(required=True)
- _description = db.StringProperty(required=True)
- _setupdate = db.DateTimeProperty(required=True, auto_now=True)
- # Sign up Handler
- # Will make sure all the fields have been filled out correctly.
- # If correct, it will redirect the user to member.html
- class SignupHandler(webapp.RequestHandler):
- def post(self):
- salutation = self.request.get("_salutation")
- fullname = self.request.get("_fullname")
- address = self.request.get("_address")
- username = self.request.get("_username")
- password = self.request.get("_password")
- description = self.request.get("_description")
- if salutation == "0" or fullname == "" or address == "" or description == "0":
- page = render('index.html')
- page.error = "One or more fields were filled out incorrectly. Sorry for the trouble!"
- page.error2 = ""
- self.response.out.write(page)
- elif checkPresence(username) == True:
- page = render('index.html')
- page.error = "I'm Sorry! The username you wanted has already been taken."
- page.error2 = ""
- self.response.out.write(page)
- else:
- # Register the user
- newmember = Users(_salutation = salutation, _fullname = fullname, _address = address, _username = username, _password = password, _description = description)
- newmember.put()
- self.session = Session()
- self.session['username'] = username
- self.session['count'] = 0
- self.redirect('/members')
- # Login Handler
- # Will make sure that the credentials are correct
- # If correct, it will redirect the user to member.html
- class LoginHandler(webapp.RequestHandler):
- def post(self):
- username = self.request.get("_username")
- password = self.request.get("_password")
- if username == "" or password == "":
- page = render('index.html')
- page.error2 = "One or more fields were filled out incorrectly!"
- page.error = ""
- self.response.out.write(page)
- elif checkPresence(username) == True and checkCredential(username, password) == True:
- self.session = Session()
- self.session['username'] = username
- self.session['count'] = 0
- self.redirect('/members')
- else:
- page = render('index.html')
- page.error2 = "Incorrect Username or Password!"
- page.error = ""
- self.response.out.write(page)
- # Logout Handler
- # Will log the user out. Then, upon success, it will redirect the user to index.html
- class LogoutHandler(webapp.RequestHandler):
- def get(self):
- self.session = Session()
- self.session.delete()
- self.redirect('/')
- class MemberHandler(webapp.RequestHandler):
- def get(self):
- self.session = Session()
- self.session['count'] = self.session['count'] + 1
- if "username" in self.session:
- if self.session['count'] == 2:
- page = render('member.html')
- page.Message = "Welcome %s! See, I still remember you. Now try and navigate away from this page and come back." % str(self.session['username']).upper()
- self.response.out.write(page)
- elif self.session['count'] > 2:
- page = render('member.html')
- page.Message = "Welcome %s! See, I still remember you even after your %ith visit to this site! Isn't that awesome!" % (str(self.session['username']).upper(), self.session['count'])
- self.response.out.write(page)
- else:
- page = render('member.html')
- page.Message = "Welcome %s! Refresh the page to see whether or not I can remember you!" % str(self.session['username']).upper()
- self.response.out.write(page)
- # Main Handler
- # Will show index.html, basically.
- class MainHandler(webapp.RequestHandler):
- def get(self):
- self.session = Session()
- if not "username" in self.session:
- page = render('index.html')
- page.error = ""
- page.error2 = ""
- self.response.out.write(page)
- else:
- self.redirect('/members')
- def main():
- application = webapp.WSGIApplication([('/', MainHandler), ('/signup', SignupHandler), ('/login', LoginHandler), ('/logout', LogoutHandler), ('/members', MemberHandler)], debug=True)
- wsgiref.handlers.CGIHandler().run(application)
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment