support for observers
This commit is contained in:
47
abot.py
47
abot.py
@@ -1,33 +1,39 @@
|
||||
|
||||
import sqlite3
|
||||
from flask import Flask, request, g, url_for, \
|
||||
render_template
|
||||
from flask import Flask, request, g, url_for, render_template
|
||||
from revprox import ReverseProxied
|
||||
from utils import *
|
||||
import manager
|
||||
import os
|
||||
import sqlite3
|
||||
|
||||
DATABASE = 'abot.sqlite' # database file
|
||||
DEBUG = True
|
||||
QUESTIONS = 'questions' # path to questions
|
||||
|
||||
DATABASE = os.getenv('DATABASE', 'abot.sqlite') # database file
|
||||
DEBUG = False
|
||||
QUESTIONS = os.getenv('QUESTIONS', 'questions') # path to questions
|
||||
GIT_COMMIT = os.getenv('GIT_COMMIT', False)
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(__name__)
|
||||
app.wsgi_app = ReverseProxied(app.wsgi_app)
|
||||
|
||||
|
||||
@app.before_request
|
||||
def before_request():
|
||||
g.db = connect_db()
|
||||
|
||||
|
||||
@app.teardown_request
|
||||
def teardown_request(exception):
|
||||
db = getattr(g, 'db', None)
|
||||
if db is not None:
|
||||
db.close()
|
||||
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
|
||||
@app.route('/preview/<key>')
|
||||
def preview(key):
|
||||
if not is_key(key):
|
||||
@@ -45,6 +51,7 @@ def preview(key):
|
||||
valid_for = valid_for
|
||||
)
|
||||
|
||||
|
||||
@app.route('/vote/<key>/<token>')
|
||||
@app.route('/vote/<key>')
|
||||
def vote(key, token = None):
|
||||
@@ -64,6 +71,7 @@ def vote(key, token = None):
|
||||
|
||||
return render_template('vote.html', form = form, key = key, token = token, valid_for = valid_for)
|
||||
|
||||
|
||||
@app.route('/save', methods=['POST'])
|
||||
def save_vote():
|
||||
key = request.form['key']
|
||||
@@ -99,6 +107,33 @@ def save_vote():
|
||||
)
|
||||
|
||||
|
||||
@app.route('/observe/<key>/<token>')
|
||||
def observe(key, token):
|
||||
if not is_key(key):
|
||||
return render_template('blank.html', message = "Unknown key")
|
||||
if not is_observer(key, token):
|
||||
return render_template('blank.html', message = "Token not valid")
|
||||
|
||||
tokens = get_token_counts(g.db, key)
|
||||
summary = False
|
||||
questions = []
|
||||
answers = []
|
||||
form = parse_form(key)
|
||||
if not form:
|
||||
return render_template('blank.html', message = "Error creating form")
|
||||
if is_show_results(form):
|
||||
summary = True
|
||||
questions, answers = sort_summary(*get_summary(g.db, key))
|
||||
|
||||
|
||||
return render_template(
|
||||
'observe.html',
|
||||
summary = summary,
|
||||
tokens = tokens,
|
||||
qa = zip(questions, answers)
|
||||
)
|
||||
|
||||
|
||||
create_db(DATABASE)
|
||||
if __name__ == "__main__":
|
||||
manager.main(DATABASE, QUESTIONS)
|
||||
|
||||
Reference in New Issue
Block a user