diff --git a/inventorysystem/templates/index.html b/inventorysystem/templates/index.html
index 5e17b72..00184b1 100644
--- a/inventorysystem/templates/index.html
+++ b/inventorysystem/templates/index.html
@@ -1,6 +1,12 @@
{% extends "base.html" %}
{% block content %}
-Logged in as {{session.full_name}} ({{session.username}})
+
AStA-Inventarsystem
+OEs
+
+
-Show OEs
{% endblock %}
diff --git a/inventorysystem/templates/list_oes.html b/inventorysystem/templates/list_oes.html
deleted file mode 100644
index b352a0b..0000000
--- a/inventorysystem/templates/list_oes.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "base.html" %}
-{% block content %}
-OEs
-
-{% for id,name in dbresult %}
-{{name}}
-{% endfor %}
-{% endblock %}
diff --git a/inventorysystem/templates/show_inventory.html b/inventorysystem/templates/show_inventory.html
index 0b24a79..6831b50 100644
--- a/inventorysystem/templates/show_inventory.html
+++ b/inventorysystem/templates/show_inventory.html
@@ -2,7 +2,22 @@
{% block content %}
Inventar
{{oe_name}}
-{% for entry in dbresult %}
-{{entry}}
+
+
+
+{% for entry in table.headers %}
+| {{entry}} |
{% endfor %}
+
+
+{% for entry in table.rows %}
+
+{% for x in entry %}
+| {{x}} |
+{% endfor %}
+
+{% endfor %}
+
+
+
{% endblock %}
diff --git a/inventorysystem/views.py b/inventorysystem/views.py
index 6489461..f3721c1 100644
--- a/inventorysystem/views.py
+++ b/inventorysystem/views.py
@@ -1,5 +1,6 @@
import flask
import psycopg2
+import psycopg2.extras
import functools
from flask import request, session
from inventorysystem import app
@@ -33,11 +34,6 @@ def permission_required(f, permission, oe=None):
return f(*args, **kwargs)
return inner_function
-@app.route('/')
-@login_required
-def index():
- return flask.render_template("index.html")
-
@app.route('/login', methods=["GET", "POST"])
def login():
@@ -53,29 +49,39 @@ def login():
password = request.form["pass"]
#FIXME hash password
- cur = db.cursor()
+ cur = db.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
cur.execute("select id,full_name from users where username=%s and password=%s",(username,password))
result = cur.fetchall()
if not result:
return show_message("Failed to log in, are username and password correct?")
else:
session["username"] = username
- session["user_id"] = result[0][0]
- session["full_name"] = result[0][1]
+ session["user_id"] = result[0]["id"]
+ session["full_name"] = result[0]["full_name"]
return flask.redirect(flask.url_for("index"))
-@app.route("/oes")
+@app.route('/')
@login_required
-def list_oes():
+def index():
db = psycopg2.connect(app.config["DSN"])
- cur = db.cursor()
+ cur = db.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
cur.execute("select id, name from organizational_units")
result = cur.fetchall()
db.close()
-
- return flask.render_template("list_oes.html", dbresult=result)
+ return flask.render_template("index.html", dbresult=result)
+
+def list_of_dicts_to_table(l, headers, default=None):
+ table = {}
+ table["headers"] = headers
+ table["rows"] = []
+ for d in l:
+ tmp_list = []
+ for header in headers:
+ tmp_list.append(d.get(header,default))
+ table["rows"].append(tmp_list)
+ return table
@app.route("/inventory/")
def show_inventory(oe):
@@ -83,14 +89,16 @@ def show_inventory(oe):
return show_message("Permission denied"), 403
db = psycopg2.connect(app.config["DSN"])
- cur = db.cursor()
- cur.execute("select id,serial,innenauftrag,description,location,purchase_date,old_inventory_id from inventory where oe=%s", (oe,))
+ cur = db.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
+ cur.execute("select id,serial,innenauftrag,description,location,purchase_date,purchase_price,old_inventory_id from inventory where oe=%s", (oe,))
result = cur.fetchall()
cur.execute("select name from organizational_units where id=%s", (oe,))
- oe_name = cur.fetchone()[0]
+ oe_name = cur.fetchone()["name"]
db.close()
- return flask.render_template("show_inventory.html", dbresult=result, oe_name=oe_name)
+ table = list_of_dicts_to_table(result, ["id", "serial", "description", "location", "innenauftrag", "purchase_date", "purchase_price", "old_inventory_id"])
+
+ return flask.render_template("show_inventory.html", table=table, oe_name=oe_name)