')
+@using_election
+def election_api_export_question(election, q_num, format):
+ import eos.base.util.blt
+ #return flask.Response(''.join(eos.base.util.blt.writeBLT(election, q_num, 2)), mimetype='text/plain')
+ resp = flask.send_file(io.BytesIO(''.join(eos.base.util.blt.writeBLT(election, q_num, 2)).encode('utf-8')), mimetype='text/plain; charset=utf-8', attachment_filename='{}.blt'.format(q_num), as_attachment=True)
+ resp.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate'
+ return resp
+
@app.route('/auditor')
def auditor():
return flask.render_template('election/auditor.html')
diff --git a/eosweb/core/templates/election/view/view.html b/eosweb/core/templates/election/view/view.html
index a553b7c..387e524 100644
--- a/eosweb/core/templates/election/view/view.html
+++ b/eosweb/core/templates/election/view/view.html
@@ -81,6 +81,8 @@
{% if (session.user and session.user.is_admin() and election.workflow.get_task('eos.base.workflow.TaskReleaseResults').status == Status.READY) or election.workflow.get_task('eos.base.workflow.TaskReleaseResults').status == Status.EXITED %}
Results
+ Export as Eos JSON
+
{% if election.workflow.get_task('eos.base.workflow.TaskReleaseResults').status == Status.EXITED %}
Results were released at {{ election.workflow.get_task('eos.base.workflow.TaskReleaseResults').exited_at|pretty_date }}.
{% else %}
diff --git a/eosweb/core/templates/question/preferential/result_raw.html b/eosweb/core/templates/question/preferential/result_raw.html
index 0b95044..8629157 100644
--- a/eosweb/core/templates/question/preferential/result_raw.html
+++ b/eosweb/core/templates/question/preferential/result_raw.html
@@ -16,6 +16,8 @@
along with this program. If not, see .
#}
+ Export as OpenSTV BLT
+
{% for answer, num in election.results[loop.index0].count() %}