-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathadmin.py
51 lines (41 loc) · 1.55 KB
/
admin.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
"""Handlers for admin features"""
from model import Poll
import webapp2
from google.appengine.ext.ndb.query import Cursor
from google.appengine.api.datastore_errors import BadValueError
class MigratePage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.write('Migrate page\n')
class PollPage(webapp2.RequestHandler):
def get(self, pid):
try:
pid = int(pid)
poll = Poll.get_by_id(pid)
if not poll:
raise ValueError
except ValueError:
self.response.set_status(404)
self.response.write('Invalid poll ID')
return
self.response.write(poll.render_html())
class PollsPage(webapp2.RequestHandler):
def get(self):
try:
cursor = Cursor.from_websafe_string(self.request.get('cursor'))
except BadValueError:
cursor = None
try:
limit = int(self.request.get('limit'))
if limit <= 0:
raise ValueError
except (TypeError, ValueError):
limit = 100
query = Poll.query().order(-Poll.created)
polls, next_cursor, has_more = query.fetch_page(limit, start_cursor=cursor)
for poll in polls:
self.response.write(poll.render_html() + '\n\n<hr>\n\n')
if not has_more:
return
more_url = '?cursor={}&limit={}'.format(next_cursor.to_websafe_string(), limit)
self.response.write('<p><a href="{}">More</a></p>'.format(more_url))