-
Notifications
You must be signed in to change notification settings - Fork 0
/
handlers.py
69 lines (55 loc) · 1.86 KB
/
handlers.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
62
63
64
65
66
67
68
69
import webapp2
import logging
from models import Comments
from webapp2_extras import jinja2
from google.appengine.api import users
from google.appengine.api import taskqueue
class BaseHandler(webapp2.RequestHandler):
@webapp2.cached_property
def jinja2(self):
_jinja2 = jinja2.get_jinja2(app=self.app)
return _jinja2
def render_template(self, filename, **kwargs):
user = users.get_current_user()
kwargs.update({
'email': user.email(),
'logout': users.create_logout_url('/')
})
render = self.jinja2.render_template(filename, **kwargs)
self.response.write(render)
class HomeHandler(BaseHandler):
PER_PAGE = 10
def get(self, page=0):
page = int(page)
offset = self.PER_PAGE * page
list, next_cursor, more = Comments.query().order(-Comments.created).fetch_page(self.PER_PAGE, offset=offset)
data = {
'list': list,
'page': page,
'back': page > 0,
'next': more and next_cursor,
}
self.render_template('index.html', **data)
class CommentHandler(BaseHandler):
def get(self):
self.render_template('comment.html')
def post(self):
comment = Comments()
comment.text = self.request.get('text')
comment.put()
self.redirect('/comment')
class RemoveHandler(webapp2.RequestHandler):
def get(self):
list = Comments.query().fetch(keys_only=True)
total = 0
for item in list:
task = taskqueue.add(url='/remove', params={'id': item.id()})
total += 1
logging.info('Total {}'.format(total))
def post(self):
id = self.request.get('id')
comment = Comments.get_by_id(int(id))
if comment:
comment.key.delete()
else:
logging.error('Not found {}'.format(id))