Skip to content

Commit

Permalink
change user path mapping
Browse files Browse the repository at this point in the history
- change from /user?email= to /user/email
- use decorators for auth checks. it looks like nobody posts anyway?
  • Loading branch information
Dolapo Falola committed Jan 10, 2011
1 parent 260d367 commit 18ada37
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 30 deletions.
57 changes: 32 additions & 25 deletions main.py
Expand Up @@ -22,18 +22,28 @@
from google.appengine.ext.webapp import util from google.appengine.ext.webapp import util


from emails import * from emails import *
from model import * from model import *


import functools
import urllib


class BaseHandler(webapp.RequestHandler): def authenticated(method):
"""Obtain user object and pass it into handling logic in subclass.""" @functools.wraps(method)

def wrapper(self, *args, **kwargs):
def get_user(self): # TODO: handle post requests separately
user = users.get_current_user() user = users.get_current_user()
if not user: if not user:
self.redirect(users.create_login_url(self.request.uri)) self.redirect(users.create_login_url(self.request.uri))
return None return None

return method(self, *args, **kwargs)
return wrapper

class BaseHandler(webapp.RequestHandler):
def get_user(self):
'''Returns the user object on authenticated requests'''
user = users.get_current_user()
assert user

userObj = User.all().filter("email =", user.email()).fetch(1) userObj = User.all().filter("email =", user.email()).fetch(1)
if not userObj: if not userObj:
userObj = User(email=user.email()) userObj = User(email=user.email())
Expand All @@ -42,25 +52,20 @@ def get_user(self):
userObj = userObj[0] userObj = userObj[0]
return userObj return userObj


def get(self):
user = self.get_user()
if user:
self.authed_get(user)

def post(self):
user = self.get_user()
if user:
self.authed_post(user)



class UserHandler(BaseHandler): class UserHandler(BaseHandler):
"""Show a given user's snippets.""" """Show a given user's snippets."""


def authed_get(self, user): @authenticated
desired_user = user_from_email(self.request.get('email')) def get(self, email):
user = self.get_user()
email = urllib.unquote_plus(email)

desired_user = user_from_email(email)

snippets = user.snippet_set snippets = user.snippet_set
snippets = sorted(snippets, key=lambda s: s.date, reverse=True) snippets = sorted(snippets, key=lambda s: s.date, reverse=True)

self.response.headers['Content-Type'] = 'text/html' self.response.headers['Content-Type'] = 'text/html'
template_values = { template_values = {
'current_user' : user, 'current_user' : user,
Expand All @@ -74,8 +79,10 @@ def authed_get(self, user):


class MainHandler(BaseHandler): class MainHandler(BaseHandler):
"""Show list of all users and acting user's settings.""" """Show list of all users and acting user's settings."""


def authed_get(self, user): @authenticated
def get(self):
user = self.get_user()
# Update enabled state if requested # Update enabled state if requested
set_enabled = self.request.get('setenabled') set_enabled = self.request.get('setenabled')
if set_enabled == '1': if set_enabled == '1':
Expand All @@ -84,7 +91,7 @@ def authed_get(self, user):
elif set_enabled == '0': elif set_enabled == '0':
user.enabled = False user.enabled = False
user.put() user.put()

# Fetch user list and display # Fetch user list and display
all_users = User.all().fetch(500) all_users = User.all().fetch(500)
self.response.headers['Content-Type'] = 'text/html' self.response.headers['Content-Type'] = 'text/html'
Expand All @@ -94,13 +101,13 @@ def authed_get(self, user):
} }


path = os.path.join(os.path.dirname(__file__), 'templates/index.html') path = os.path.join(os.path.dirname(__file__), 'templates/index.html')
self.response.out.write(template.render(path, template_values)) self.response.out.write(template.render(path, template_values))




def main(): def main():
application = webapp.WSGIApplication( application = webapp.WSGIApplication(
[('/', MainHandler), [('/', MainHandler),
('/user', UserHandler), ('/user/(.*)', UserHandler),
('/reminderemail', ReminderEmail), ('/reminderemail', ReminderEmail),
('/digestemail', DigestEmail)], ('/digestemail', DigestEmail)],
debug=True) debug=True)
Expand Down
10 changes: 5 additions & 5 deletions templates/index.html
@@ -1,19 +1,19 @@
{% extends "base.html" %} {% extends "base.html" %}


{% block body %} {% block body %}
<h2><a href="/user?email={{ current_user.email }}">{{ current_user.email }}</a></h2> <h2><a href="/user/{{ current_user.email }}">{{ current_user.email }}</a></h2>
currently currently
{% if current_user.enabled %} {% if current_user.enabled %}
<b>enabled</b> <a href="?setenabled=0">disable</a> <b>enabled</b> <a href="?setenabled=0">disable</a>
{% else %} {% else %}
<b>disabled</b> <a href="?setenabled=1">enable</a> <b>disabled</b> <a href="?setenabled=1">enable</a>
{% endif %} {% endif %}

<h3>Users</h3> <h3>Users</h3>
{% for user in all_users %} {% for user in all_users %}
<a href="/user?email={{ user.email }}">{{ user.email }}</a> <a href="/user/{{ user.email }}">{{ user.email }}</a>
<br/> <br/>
{% endfor %} {% endfor %}



{% endblock %} {% endblock %}

0 comments on commit 18ada37

Please sign in to comment.