This repository has been archived by the owner on Apr 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
motioner.py
60 lines (47 loc) · 1.81 KB
/
motioner.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
48
49
50
51
52
53
54
55
56
57
58
59
60
from flask import Flask, request, Response, redirect, render_template
from latex import build_pdf, LatexBuildError
from latex.jinja2 import make_env
app = Flask(__name__, static_url_path='/static')
texenv = make_env(loader=app.jinja_loader)
@app.route('/')
@app.route('/motion')
@app.route('/yrkande')
@app.route('/proposition')
@app.route('/reply')
def index(): return render_template('index.html')
@app.route('/motion.pdf', methods=['POST'])
def pdf():
try:
if not 'items[]' in request.form:
return redirect('/')
if not 'authors[]' in request.form:
return redirect('/')
pdffile = build_pdf(get_tex())
return Response(pdffile.stream, mimetype='application/pdf')
except LatexBuildError as e:
return Response(tex, mimetype='application/x-tex')
@app.route('/motion.tex', methods=['POST'])
def tex():
return Response(get_tex(), mimetype='application/x-tex')
def convert_newlines(text):
return text.replace("\n", "\\\\\n").replace("\r","")
def get_tex():
template = texenv.get_template('motion.tex')
if request.form['document_type'] in ['motion', 'yrkande']:
i_or_we = 'vi' if len(request.form.getlist('authors[]')) > 1 else 'jag'
else:
i_or_we = 'D-rektoratet'
items = [convert_newlines(i) for i in request.form.getlist('items[]')]
background = convert_newlines(request.form['background'])
return template.render(
i_or_we=i_or_we,
document_type=request.form['document_type'],
title=request.form['title'],
meeting=request.form['meeting'],
date=request.form['date'],
background=background,
items=items,
authors=request.form.getlist('authors[]')
).replace('§', '\\S')
if __name__ == '__main__':
app.run(debug=True)