My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env python
# encoding: utf-8
"""
controller.py
$Id$
Created by Roman Kirillov on 2010-01-25.
"""
import view
import model

import logging

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

class LoggedInRequestHandler(webapp.RequestHandler):
def currentVisitor(self):
user = users.get_current_user()

# we shouldn't check user, as /login and /stats specifies
# login:required in app.yaml

q = model.Visitor.all()
q.filter('user = ', user)

qr = q.fetch(2)

if len(qr) == 0:
u = model.Visitor()
elif len(qr) > 1:
# something is horribly wrong here, it shouldn't happen
# but it still could
logging.error("Duplicating user %s in datastore" % user.nickname())
raise Exception("Duplicating user %s in datastore" % user.nickname())
else:
u = qr[0]

self.currentVisitor = u
return u

class DefaultRequestHandler(webapp.RequestHandler):
'''
Handles default requests - checks whether user is logged in; if it is - saves an information about
his visit in the database.
'''

def get(self):
user = users.get_current_user()

page = None
if not user:
page = view.StartPage(self.request)
else:
page = view.WelcomePage(self.request)

page.render(self.response.out)

class StatsRequestController(LoggedInRequestHandler):
def get(self):
u = self.currentVisitor()
page = view.StatsPage(self.request, u)

page.render(self.response.out)

class LoginController(LoggedInRequestHandler):
'''
We use this controller just for handling the login event
'''
def get(self):
u = self.currentVisitor()

u.hits = u.hits + 1
u.put()

self.redirect('/')

Change log

r4 by sigizmund on Jan 25, 2010   Diff
Id tags added
Go to: 
Project members, sign in to write a code review

Older revisions

r2 by sigizmund on Jan 25, 2010   Diff
Initial import
All revisions of this file

File info

Size: 2015 bytes, 77 lines

File properties

svn:keywords
Id
Powered by Google Project Hosting