]> git.siccegge.de Git - fachschaftentool.git/blob - application.py
fachschaftentool
[fachschaftentool.git] / application.py
1 #!/usr/bin/python2
2
3 import os
4 import os.path
5 import sqlite3
6 import tarfile
7 import StringIO
8
9 from flask import Flask, session, redirect, url_for, escape, request, render_template, g, make_response
10
11 app = Flask(__name__)
12
13 #DATABASE = os.path.join(os.path.dirname(__file__), '..', 'data', 'fachschaften.sqlite')
14 DATABASE = os.path.join(os.path.dirname(__file__), 'fachschaften.sqlite')
15
16 def get_db():
17 db = sqlite3.connect(DATABASE)
18 db.row_factory = sqlite3.Row
19 return db
20
21 @app.route('/')
22 def index():
23 db = get_db()
24 cursor = db.cursor()
25 fachschaften = cursor.execute("SELECT * from fachschaft")
26 return render_template('index.html', fachschaften=fachschaften)
27
28 @app.route('/show/<int:id>/')
29 def show(id):
30 db = get_db()
31 cursor = db.cursor()
32 fachschaft = cursor.execute("SELECT * from fachschaft WHERE rowid = ?", [id]).fetchone()
33 studiengang = cursor.execute("SELECT * from studiengang WHERE fachschaft = ?", [fachschaft['rowid']]).fetchall()
34 return render_template('show.html', fachschaft=fachschaft, studiengaenge=studiengang)
35
36 @app.route('/add/')
37 def add():
38 return render_template('add.html')
39
40 @app.route('/addp/', methods=['POST'])
41 def add_process():
42 db = get_db()
43 cursor = db.cursor()
44 data = request.form
45
46 print data
47
48 cursor.execute("INSERT INTO fachschaft "
49 "(langname, kurzname, land, stadt, studenten, "
50 "organ, vertreten, organisation, fachschaftler) "
51 "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
52 [data['unilang'],
53 data['unikurz'],
54 data['bundesland'],
55 data['stadt'],
56 data['gesamtstudis'],
57 data['fsorgan'],
58 data['vertretenestudis'],
59 data['organisationsform'],
60 data['aktive']])
61 rowid = cursor.lastrowid
62 for i in range(0, 10):
63 if data['studiengang%d' % i] != '':
64 cursor.execute("INSERT INTO studiengang "
65 "(fachschaft, name, anf_dieses, anf_vorjahr) "
66 "VALUES (?, ?, ?, ?)",
67 [int(rowid),
68 data['studiengang%d' % i],
69 data['anfaenger%d' % i],
70 data['vorjahr%d' % i]])
71 db.commit()
72 return redirect(url_for('show', id = rowid))
73
74 @app.route('/download/')
75 def download():
76 db = get_db()
77 cursor = db.cursor()
78 data = StringIO.StringIO()
79 tar = tarfile.TarFile(mode='w', fileobj=data)
80 for fachschaft in cursor.execute("SELECT * from fachschaft"):
81 studiengaenge = cursor.execute("SELECT * from studiengang WHERE fachschaft = ?", [fachschaft['rowid']]).fetchall()
82 fdata = render_template('fachschaft.tex',
83 fachschaft = fachschaft,
84 studiengaenge = studiengaenge)
85 fdata = fdata.encode('utf-8')
86 info = tarfile.TarInfo(name=fachschaft['kurzname'])
87 info.size = len(fdata)
88 tar.addfile(info, StringIO.StringIO(fdata))
89 print fdata
90
91 tar.close()
92 responseobj=make_response(data.getvalue())
93 responseobj.mimetype="application/x-tar"
94 return responseobj
95
96 if __name__ == '__main__':
97 app.run(debug=True)