-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrandom_quote.py
47 lines (36 loc) · 1.33 KB
/
random_quote.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
from tipfy import RequestHandler, request, Response
from tipfy.ext.jinja2 import render_template
from google.appengine.ext import db
from werkzeug.exceptions import NotFound
import models, quotejson
from filters import FilterCollection, filters
import random
_n = 5
class RandomQuoteHandler(RequestHandler):
def get(self, **kwargs):
json = request.is_xhr or request.args.get('json', '')
response = Response(mimetype = 'application/json' if json else 'text/html')
collection = FilterCollection(filters, request, response)
query = models.accepted_quotes()
collection.add_to_query(query)
query.filter('random >', random.random())
query.order('random')
qs = [ q for q in query.fetch(_n) ]
if len(qs) < _n: # wraparound!
query = models.accepted_quotes()
collection.add_to_query(query)
query.order('random')
qs.extend(query.fetch(_n - len(qs)))
if len(qs) > 0:
q = random.choice(qs)
else:
q = None
if json:
out = quotejson.single(q)
else:
out = render_template(
'cppbash/random_quote.html',
quote = q,
filter_collection = collection)
response.response = [out]
return response