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 %} + {% endfor %} + + +{% for entry in table.rows %} + +{% for x in entry %} + +{% endfor %} + +{% endfor %} + +
{{entry}}
{{x}}
+ {% 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)