My favorites
▼
|
Sign in
habr-gae-helloworld
A helloworld application for GAE written for habrahabr.ru
Project Home
Downloads
Wiki
Issues
Source
Checkout
Browse
Changes
Source path:
svn
/
trunk
/
controller.py
‹r2
r5
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('/')
Show details
Hide details
Change log
r4
by sigizmund on Jan 25, 2010
Diff
Id tags added
Go to:
/trunk/app.yaml
/trunk/controller.py
/trunk/index.yaml
/trunk/main.py
/trunk/model.py
/trunk/view.py
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
View raw file
File properties
svn:keywords
Id
Powered by
Google Project Hosting