JSON API
parent
bead955f3a
commit
7c3b95c910
46
app.py
46
app.py
|
@ -1,6 +1,8 @@
|
||||||
from flask import Flask, g, render_template
|
from flask import Flask, g, render_template, Response
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import urllib
|
import urllib
|
||||||
|
import random
|
||||||
|
import json
|
||||||
from markupsafe import Markup
|
from markupsafe import Markup
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,24 +36,54 @@ def urlencode_filter(s):
|
||||||
return Markup(s)
|
return Markup(s)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/terms')
|
def _get_terms():
|
||||||
@app.route('/')
|
|
||||||
def list_terms():
|
|
||||||
cur = g.db.cursor()
|
cur = g.db.cursor()
|
||||||
cur.execute("select _term._name, count(_entry._text) from _term left join _entry on _entry._term_oid = _term._oid group by _term._oid order by _term._name")
|
cur.execute("select _term._name, count(_entry._text) from _term left join _entry on _entry._term_oid = _term._oid group by _term._oid order by _term._name")
|
||||||
terms = [(t[0].decode('utf-8'), t[1]) for t in cur.fetchall()]
|
terms = [(t[0].decode('utf-8'), t[1]) for t in cur.fetchall()]
|
||||||
cur.close()
|
cur.close()
|
||||||
return render_template('terms.html', terms=terms)
|
return terms
|
||||||
|
|
||||||
|
|
||||||
@app.route('/term/<path:term>')
|
def _get_entries(term):
|
||||||
def show_term(term):
|
|
||||||
cur = g.db.cursor()
|
cur = g.db.cursor()
|
||||||
cur.execute('select _entry._text, _entry._added_at, _entry._added_by from _term left join _entry on _entry._term_oid = _term._oid where lower(_term._name) = lower(%s) order by _entry._added_at', [term,])
|
cur.execute('select _entry._text, _entry._added_at, _entry._added_by from _term left join _entry on _entry._term_oid = _term._oid where lower(_term._name) = lower(%s) order by _entry._added_at', [term,])
|
||||||
entries = [(e[0].decode('utf-8'), e[1], e[2]) for e in cur.fetchall()]
|
entries = [(e[0].decode('utf-8'), e[1], e[2]) for e in cur.fetchall()]
|
||||||
cur.close()
|
cur.close()
|
||||||
|
return entries
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/terms')
|
||||||
|
@app.route('/')
|
||||||
|
def list_terms():
|
||||||
|
terms = _get_terms()
|
||||||
|
return render_template('terms.html', terms=terms)
|
||||||
|
|
||||||
|
@app.route('/terms.json')
|
||||||
|
def list_terms_json():
|
||||||
|
terms = _get_terms()
|
||||||
|
return Response(response=json.dumps(terms), mimetype="application/json")
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/term/<path:term>')
|
||||||
|
def show_term(term):
|
||||||
|
entries = _get_entries(term)
|
||||||
return render_template('term.html', entries=entries, term=term)
|
return render_template('term.html', entries=entries, term=term)
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/term.json/<path:term>')
|
||||||
|
def show_term_json(term):
|
||||||
|
entries = _get_entries(term)
|
||||||
|
entries = [{'entry': e[0], 'added': e[1].strftime("%s"), 'author': e[2]} for e in entries]
|
||||||
|
return Response(response=json.dumps(entries), mimetype="application/json")
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/randomterm.json/<path:term>')
|
||||||
|
def show_term_random_json(term):
|
||||||
|
entries = _get_entries(term)
|
||||||
|
entries = [{'entry': e[0], 'added': e[1].strftime("%s"), 'author': e[2]} for e in entries]
|
||||||
|
entry = random.choice(entries)
|
||||||
|
return Response(response=json.dumps(entry), mimetype="application/json")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
app.run(debug=True)
|
app.run(debug=True)
|
||||||
|
|
Loading…
Reference in New Issue