--- /dev/null
+#!/usr/bin/python2
+
+import os
+import os.path
+import sqlite3
+import tarfile
+import StringIO
+
+from flask import Flask, session, redirect, url_for, escape, request, render_template, g, make_response
+
+app = Flask(__name__)
+
+#DATABASE = os.path.join(os.path.dirname(__file__), '..', 'data', 'fachschaften.sqlite')
+DATABASE = os.path.join(os.path.dirname(__file__), 'fachschaften.sqlite')
+
+def get_db():
+ db = sqlite3.connect(DATABASE)
+ db.row_factory = sqlite3.Row
+ return db
+
+@app.route('/')
+def index():
+ db = get_db()
+ cursor = db.cursor()
+ fachschaften = cursor.execute("SELECT * from fachschaft")
+ return render_template('index.html', fachschaften=fachschaften)
+
+@app.route('/show/<int:id>/')
+def show(id):
+ db = get_db()
+ cursor = db.cursor()
+ fachschaft = cursor.execute("SELECT * from fachschaft WHERE rowid = ?", [id]).fetchone()
+ studiengang = cursor.execute("SELECT * from studiengang WHERE fachschaft = ?", [fachschaft['rowid']]).fetchall()
+ return render_template('show.html', fachschaft=fachschaft, studiengaenge=studiengang)
+
+@app.route('/add/')
+def add():
+ return render_template('add.html')
+
+@app.route('/addp/', methods=['POST'])
+def add_process():
+ db = get_db()
+ cursor = db.cursor()
+ data = request.form
+
+ print data
+
+ cursor.execute("INSERT INTO fachschaft "
+ "(langname, kurzname, land, stadt, studenten, "
+ "organ, vertreten, organisation, fachschaftler) "
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
+ [data['unilang'],
+ data['unikurz'],
+ data['bundesland'],
+ data['stadt'],
+ data['gesamtstudis'],
+ data['fsorgan'],
+ data['vertretenestudis'],
+ data['organisationsform'],
+ data['aktive']])
+ rowid = cursor.lastrowid
+ for i in range(0, 10):
+ if data['studiengang%d' % i] != '':
+ cursor.execute("INSERT INTO studiengang "
+ "(fachschaft, name, anf_dieses, anf_vorjahr) "
+ "VALUES (?, ?, ?, ?)",
+ [int(rowid),
+ data['studiengang%d' % i],
+ data['anfaenger%d' % i],
+ data['vorjahr%d' % i]])
+ db.commit()
+ return redirect(url_for('show', id = rowid))
+
+@app.route('/download/')
+def download():
+ db = get_db()
+ cursor = db.cursor()
+ data = StringIO.StringIO()
+ tar = tarfile.TarFile(mode='w', fileobj=data)
+ for fachschaft in cursor.execute("SELECT * from fachschaft"):
+ studiengaenge = cursor.execute("SELECT * from studiengang WHERE fachschaft = ?", [fachschaft['rowid']]).fetchall()
+ fdata = render_template('fachschaft.tex',
+ fachschaft = fachschaft,
+ studiengaenge = studiengaenge)
+ fdata = fdata.encode('utf-8')
+ info = tarfile.TarInfo(name=fachschaft['kurzname'])
+ info.size = len(fdata)
+ tar.addfile(info, StringIO.StringIO(fdata))
+ print fdata
+
+ tar.close()
+ responseobj=make_response(data.getvalue())
+ responseobj.mimetype="application/x-tar"
+ return responseobj
+
+if __name__ == '__main__':
+ app.run(debug=True)
--- /dev/null
+CREATE TABLE fachschaft (
+ rowid INTEGER PRIMARY KEY,
+ langname TEXT,
+ kurzname TEXT,
+ land TEXT,
+ stadt TEXT,
+ studenten TEXT,
+ organ TEXT,
+ vertreten TEXT,
+ organisation TEXT,
+ fachschaftler TEXT
+);
+
+CREATE TABLE studiengang (
+ fachschaft INTEGER,
+ name TEXT,
+ anf_dieses TEXT,
+ anf_vorjahr TEXT
+);
--- /dev/null
+{% extends "base.html" %}
+{% block content %}
+<h2>Fachschaftsvorstellung</h2>
+<p>
+ Bitte fülle das folgende Formular aus. In allen Feldern kann
+ LaTeX-Code verwendet werden, also z.B. $\leq$ für ≤.
+</p>
+<form action="/addp/" method="post">
+ <h3>Allgemeines</h3>
+ <table>
+ <tr>
+ <td>
+ Vollständiger Name der Uni
+ (z.B. "Friedrich-Alexander-Universität Erlangen-Nürnberg"):
+ </td>
+ <td>
+ <input type="text" name="unilang" />
+ </td>
+ </tr>
+ <tr>
+ <td>Kurzbezeichnung der Uni (z.B. "FAU Erlangen"):</td>
+ <td><input type="text" name="unikurz" /></td>
+ </tr>
+ <tr>
+ <td>Stadt:</td>
+ <td><input type="text" name="stadt" /></td>
+ </tr>
+ <tr>
+ <td>Bundesland/Land:</td>
+ <td><input type="text" name="bundesland" /></td>
+ </tr>
+ <tr>
+ <td>Gesamtzahl Studenten an der Uni (ca.):</td>
+ <td><input type="text" name="gesamtstudis" /></td>
+ </tr>
+ <tr>
+ <td>Bezeichnung des Fachschaftsorgans (z.B. "Fachschaftsrat Informatik"):</td>
+ <td> <input type="text" name="fsorgan" /></td>
+ </tr>
+ <tr>
+ <td>Vertretene Studenten:</td>
+ <td><input type="text" name="vertretenestudis" /></td>
+ </tr>
+ <tr>
+ <td>Organisationsform (z.B. "Verein", "Teilkörperschaft"): </td>
+ <td><input type="text" name="organisationsform" /></td>
+ </tr>
+ <tr>
+ <td>Anzahl aktiver Fachschaftler (ohne "Karteileichen"): </td>
+ <td><input type="text" name="aktive" /></td>
+ </tr>
+ </table>
+</p>
+<h3>Studiengänge</h3>
+<p>
+ Auf der Vorstellungsfolie ist Platz für maximal 10
+ Studiengängen. Du kannst auch weniger als 10 Studiengänge
+ eintragen. Verwende dann einfach nur die ersten Felder.
+</p>
+<table border="0" cellspacing="0">
+ <tr>
+ <th rowspan="2" class="headbottom noborder"></th>
+ <th rowspan="2" class="headbottom noborder">Bezeichnung des<br />Studienganges</th>
+ <th colspan="2">Anzahl der Studienanfänger im...</th>
+ </tr>
+ <tr class="headbottom">
+ <th class="small">aktuellen akademischen Jahr</th>
+ <th class="small">vergangenen akademischen Jahr</th>
+ </tr>
+ {% for i in range(0, 10) %}
+ <tr>
+ <td class="noborder">{{i}}.</td>
+ <td class="noborder"><input type="text" name="studiengang{{i}}" maxlength="35" /></td>
+ <td><input type="text" name="anfaenger{{i}}" /> </td>
+ <td><input type="text" name="vorjahr{{i}}" /></td>
+ </tr>
+ {% endfor %}
+</table>
+<p>
+ <input type="submit" name="submit" value="Vorschaubild anzeigen" />
+ <input type="submit" name="submit" value="Eintragen" />
+ <input type="hidden" name="sessionid" value="42" />
+</p>
+</form>
+{% endblock %}
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" >
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <link href="http://eva.fsi.informatik.uni-erlangen.de/static/style.css" type="text/css" rel="stylesheet" />
+ <title>{% block title %}{% endblock %}</title>
+ </head>
+
+ <body>
+ <div id="topofthepops">
+ <div id="floppy">
+ <div id="content">
+ <div id="head_logo">
+ <a href="/">
+ <img src="https://fsi.informatik.uni-erlangen.de/forum/unb_lib/designs/fsi-wide/img/logo.png"
+ alt="FSI Informatik"/>
+ </a>
+ </div>
+ <div class="head_navigation_container">
+ <!-- Es duerfen keine Leerzeichen zwischen den Tags vorkommen :/ -->
+ <ul class="head_navigation">
+ <li><a href="{{ url_for('index') }}">Fachschaftstool</a></li><li><a href="{{ url_for('add') }}">Eintragen</a></li> <li><a href="http://kif.fsinf.de/wiki/KIF415:Hauptseite">KIF-Wiki</a></li>
+ </ul>
+ </div>
+ <div id="body">
+ {% block content %}
+ {% endblock %}
+ </div>
+ <div id="footer">
+ <ul>
+ <li>
+ <a class="action" accesskey="h" href="{{ url_for('index') }}">Fachschaftstool</a>
+ </li>
+ <li>
+ <a class="action" accesskey="j" href="{{ url_for('add') }}">Eintragen</a>
+ </li>
+ <li>
+ <a class="action" accesskey="j" href="{{ url_for('download') }}">Download</a>
+ </li>
+ <li>
+ <a class="action" accesskey="q" href="http://kif.fsinf.de/wiki/KIF415:Hauptseite">KIF-Wiki</a>
+ </li>
+ </ul>
+ {% block footer %}
+ {% endblock %}
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
--- /dev/null
+ \section{ {{fachschaft.kurzname}} }
+ \begin{frame}
+ \begin{tabular}{lll}
+ & \begin{tabular}{p{9cm}}
+ {\Large\bf {{fachschaft.langname}}
+ \cline{1-1}
+ \smash{\rlap{\raisebox{-.5mm}{\hspace*{.3ex}');
+ {{fachschaft.stadt}}, {{fachschaft.land}}, {{fachschaft.studenten}}
+ Studenten}}} \\\\
+ \end{tabular} &
+ \rlap{\smash{\raisebox{-18mm}{\includegraphics[width=2cm]{kiflogo}}}}\\
+ &\multicolumn{2}{l}{\begin{tabular}{l}' . "\n");
+ \textbf{ {{fsorgan}} } \\
+ vertritt {{fachschaft.vertreten}} Studenten \\
+ {{fachschaft.organisation}}\\
+ {{fachschaft.aktive}} Aktive' . '\end{tabular}} \\\\
+ &\multicolumn{2}{l}{\begin{tabular}{lll}
+ \rlap{\textbf{Studiengang}}\hspace*{6.8cm} &
+ \rlap{\textbf{Anf\"anger}}\hspace*{2cm} & \textbf{Vorjahr}
+ \\
+ {% for studiengang in studiengaenge %}
+ {{studiengang.name}} & {{studiengang.anf_dieses}} & {{studiengang.anf_vorjahr}} \\
+ {% endfor %}
+ \end{tabular}}\\\end{tabular}\\
+ \vspace*{\fill} \mbox{}\hspace*{-2.8mm}\insertnavigation{\linewidth}
+ \end{frame}
\ No newline at end of file
--- /dev/null
+{% extends "base.html" %}
+{% block content %}
+<h2>KIF 41,5 Fachschaftentool</h2>
+<p>
+ <a href="{{ url_for('add') }}">Eintragen</a>
+</p>
+
+<ul>
+{% for fachschaft in fachschaften %}
+<li><a href="{{ url_for('show', id=fachschaft.rowid) }}">{{fachschaft.langname}}</a></li>
+{% endfor %}
+</ul>
+{% endblock %}
--- /dev/null
+{% extends "base.html" %}
+{% block content %}
+<h2>{{fachschaft.kurzname}}</h2>
+({{fachschaft.langname}})
+
+<table>
+ <tr><td>Land/Bundesland</td><td>{{fachschaft.land}}</td></tr>
+ <tr><td>Stadt</td><td>{{fachschaft.stadt}}</td></tr>
+ <tr><td>Studenten (Uni)</td><td>{{fachschaft.studenten}}</td></tr>
+ <tr><td>Fachschaftsorgan</td><td>{{fachschaft.organ}}</td></tr>
+ <tr><td>Vertretene Studenten</td><td>{{fachschaft.vertreten}}</td></tr>
+ <tr><td>Organisationsform</td><td>{{fachschaft.organisation}}</td></tr>
+ <tr><td>Aktive Fachschaftler</td><td>{{fachschaft.fachschaftler}}</td></tr>
+<table>
+
+<h4>Studiengänge</h4>
+<table>
+<tr>
+ <th>Studiengang</th>
+ <th>Anfänger 2013</th>
+ <th>Anfänger 2012</th>
+</tr>
+{% for studiengang in studiengaenge %}
+<tr>
+ <td>{{studiengang.name}}</td>
+ <td>{{studiengang.anf_dieses}}</td>
+ <td>{{studiengang.anf_vorjahr}}</td>
+</tr>
+{% endfor %}
+</table>
+{% endblock %}