initial working state
This commit is contained in:
93
abot.py
Normal file
93
abot.py
Normal file
@@ -0,0 +1,93 @@
|
||||
|
||||
import sqlite3
|
||||
from flask import Flask, request, g, url_for, \
|
||||
render_template
|
||||
from revprox import ReverseProxied
|
||||
from utils import *
|
||||
import manager
|
||||
|
||||
DATABASE = 'abot.sqlite'
|
||||
DEBUG = False
|
||||
SECRET_KEY = 'otwet6oi539iosf'
|
||||
QUESTIONS = 'questions' # path to questions
|
||||
|
||||
# create our little application :)
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(__name__)
|
||||
app.wsgi_app = ReverseProxied(app.wsgi_app)
|
||||
|
||||
def connect_db():
|
||||
return sqlite3.connect(app.config['DATABASE'])
|
||||
|
||||
@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):
|
||||
return render_template('blank.html', message = "Unknown key")
|
||||
form = parse_form(key)
|
||||
if not form:
|
||||
return render_template('blank.html', message = "Error creating form")
|
||||
if not is_draft(form):
|
||||
return render_template('blank.html', message = "Preview not enabled")
|
||||
valid_for = time_to_expiry(form)
|
||||
return render_template(
|
||||
'preview.html',
|
||||
key = key,
|
||||
form = form,
|
||||
valid_for = valid_for
|
||||
)
|
||||
|
||||
@app.route('/vote/<key>/<token>')
|
||||
def vote(key, token):
|
||||
if not is_key(key):
|
||||
return render_template('blank.html', message = "Unknown key")
|
||||
form = parse_form(key)
|
||||
if not form:
|
||||
return render_template('blank.html', message = "Error creating form")
|
||||
if is_draft(form):
|
||||
return render_template('blank.html', message = "Not published")
|
||||
if is_expired(form):
|
||||
return render_template('blank.html', message = "Voting has closed")
|
||||
if has_voted(key, token):
|
||||
return render_template('blank.html', message = "Token already used")
|
||||
valid_for = time_to_expiry(form)
|
||||
|
||||
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']
|
||||
token = request.form['token']
|
||||
if not is_key(key):
|
||||
return render_template('blank.html', message = "Unknown key")
|
||||
form = parse_form(key)
|
||||
if not form:
|
||||
return render_template('blank.html', message = "Error creating form")
|
||||
create_voter_table(g.db, key)
|
||||
if is_draft(form):
|
||||
return render_template('blank.html', message = "Not published")
|
||||
if is_expired(form):
|
||||
return render_template('blank.html', message = "Voting has closed")
|
||||
if has_voted(key, token):
|
||||
return render_template('blank.html', message = "Token already used")
|
||||
create_result_table(key)
|
||||
|
||||
write_vote(key, token, request.form, form) # using request.
|
||||
|
||||
return render_template('thank_you.html')
|
||||
|
||||
if __name__ == "__main__":
|
||||
manager.main(DATABASE, QUESTIONS)
|
||||
Reference in New Issue
Block a user