/
gaeHandler.py
61 lines (50 loc) · 1.88 KB
/
gaeHandler.py
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
#!/usr/bin/env python
# encoding: utf-8
import os
import json
import time
import jinja2
import logging
from datastore import Post
from webapp2 import RequestHandler
from google.appengine.ext import db
from google.appengine.api import memcache
template_dir = os.path.join(os.path.dirname(__file__),'templates')
jinja2_env = jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir), autoescape=True)
class Handler(RequestHandler):
def write(self, *a, **kw):
return self.response.out.write(*a, **kw)
def render_str(self, template, **params):
t = jinja2_env.get_template(template)
return t.render(params)
def render(self, template, **kw):
self.write(self.render_str(template, **kw))
def render_json(self, d):
json_txt = json.dumps(d)
self.response.headers['Content-Type'] = 'application/json; charset=UTF-8'
self.response.write(json_txt)
def initialize(self, *a, **kw):
RequestHandler.initialize(self, *a, **kw)
if self.request.url.endswith('.json'):
self.format = 'json'
else:
self.format = 'html'
def get_key(self, label):
data = memcache.get(label)
if data:
return data, None
elif label == 'catalog':
data = db.GqlQuery('select * from Post order by created desc')
logging.info('*** Query Query Query ***')
memcache.set(label, data)
return data, time.time()
elif label == 'blog':
data = db.GqlQuery('select * from Post order by created desc limit 10')
logging.info('*** Query Query Query ***')
memcache.set(label, data)
return data, time.time()
else:
data = Post.get_by_id(int(label))
logging.info('*** Query Query Query ***')
memcache.set(str(label), data)
return data, time.time()