Conflicts:
	app/database.pyc
	app/product.pyc
	app/views.pyc
	test/database.db
This commit is contained in:
Bernhard Stampfer
2016-02-15 20:30:32 +01:00
9 changed files with 148 additions and 28 deletions

View File

@@ -111,20 +111,42 @@ def get_products():
p.id = row[0] p.id = row[0]
p.name = row[1] p.name = row[1]
p.price = row[2] p.price = row[2]
p.isshown = row[3]
products.append(p) products.append(p)
return products return products
def get_product_by_id(id): def get_product_by_id(id):
row = query_db("SELECT * FROM PRODUCTS WHERE ID = ?", str(id), one=True) row = query_db("SELECT * FROM PRODUCTS WHERE ID = ?", [str(id)], one=True)
print row # print row
p = Product() p = Product()
p.id = row[0] p.id = row[0]
p.name = row[1] p.name = row[1]
p.price = row[2] p.price = row[2]
p.isshown = row[3]
return p return p
def get_product_by_name(name):
row = query_db("SELECT * FROM PRODUCTS WHERE NAME = ?", [str(name)], one=True)
p = Product()
p.id = row[0]
p.name = row[1]
p.price = row[2]
p.isshown = row[3]
return p
def update_product(p):
query_db("UPDATE products SET NAME=?, PRICE=?, ISSHOWN=? WHERE ID=?", (p.name, p.price, p.isshown, p.id))
get_db().commit()
def add_product(p):
query_db("Insert INTO PRODUCTS (NAME, PRICE, ISSHOWN) VALUES (?, ?, ?)", (p.name, p.price, p.isshown))
get_db().commit()
def get_consumed(user=None, startdate=None, enddate=None): def get_consumed(user=None, startdate=None, enddate=None):
if user is None and startdate is None and enddate is None: if user is None and startdate is None and enddate is None:

View File

@@ -3,4 +3,5 @@ class Product:
def __init__(self): def __init__(self):
self.id = 0 self.id = 0
self.name = "" self.name = ""
self.price = 0.0 self.price = 0.0
self.isshown = False

View File

@@ -7,8 +7,24 @@
</ul> </ul>
<h1> Konsumatverwaltung </h1> <h1> Konsumatverwaltung </h1>
{% for product in products %} <table>
<div><p> {{ product.id }}, {{product.name}}, {{product.price}} €</p></div> <tr>
{% endfor %} <th>ID</th>
<a href=/manage_beverages/add>Getränk Hinzufügen</a></li> <th>Name</th>
{% endblock %} <th>Preis</th>
<th>Wird angezeigt</th>
<th></th>
</tr>
{% for product in products %}
<tr>
<td>{{product.id}}</td>
<td>{{product.name}}</td>
<td>{{product.price}}</td>
<td>{% if product.isshown %} &#9745; {% else %} &#9744; {% endif %} </td>
<td> <a href="/manage_beverages/edit/{{product.name}}">bearbeiten</a></td>
</tr>
{% endfor %}
</table>
<br />
<a href=/manage_beverages/add>Getränk Hinzufügen</a></li>
{% endblock %}

View File

@@ -0,0 +1,18 @@
{% extends "base.html"%}
{% set title = "Produkt hinzufügen" %}
{% block content %}
<h1> Produkt hinzufügen</h1>
{% if error %}
<p>Fehler: {{ error }}</p>
{% endif %}
{% if success %}
<p>{{ success }}</p>
{% endif %}
<p> TODO: many </p>
<form name="user" method="post" action="/manage_beverages/add">
Produktname:<input type="text" name="name" required><br>
Preis:<input type="number" name="price" step="any" required value="0.0" /><br>
Angezeigt: <input type="checkbox" name="isshown" checked /><br>
<input type="submit" value="Hinzufügen">
</form>
{% endblock %}

View File

@@ -0,0 +1,19 @@
{% extends "base.html"%}
{% set title = "Konsumat bearbeiten" %}
{% block content %}
<h1> {{product_to_edit.name}} bearbeiten</h1>
{% if error %}
<p>Fehler: {{ error }}</p>
{% else %}
{% if success %}
<p>{{ success }}</p>
{% endif %}
<form name="product" method="post" action="/manage_beverages/edit">
Userid: <input type="text" name="id" required value="{{product_to_edit.id}}" readonly="readonly" /> <br>
Username:<input type="text" name="name" required value="{{product_to_edit.name}}" /> <br>
Preis:<input type="number" name="price" step="any" required value="{{product_to_edit.price}}" /><br>
Angezeigt: <input type="checkbox" name="isshown" {% if product_to_edit.isshown %} checked {% endif %} /><br>
<input type="submit" value="Übernehmen" />
</form>
{% endif %}
{% endblock %}

View File

@@ -1,16 +0,0 @@
{% extends "base.html"%}
{% set title = "Produkt hinzufügen" %}
{% block content %}
<h1> Produkt hinzufügen</h1>
{% if error %}
<p>Fehler: {{ error }}</p>
{% endif %}
{% if success %}
<p>{{ success }}</p>
{% endif %}
<p> TODO: many </p>
<form name="user" method="post" action="/manage_users/add">
Produktname:<input type="text" name=username required placeholder="Username"><br>
Preis:<input type="password" name=password1 required placeholder="Password"><br>
</form>
{% endblock %}

View File

@@ -138,6 +138,65 @@ def manage_beverages():
products = get_products() products = get_products()
return render_template('manage_beverages.html', products=products, user=get_user_by_name(session.get('name'))) return render_template('manage_beverages.html', products=products, user=get_user_by_name(session.get('name')))
@app.route('/manage_beverages/edit', methods=['POST'])
@app.route('/manage_beverages/edit/<name>', methods=['GET'])
@requires_baron
def manage_beverages_edit(name=None):
if request.method == 'GET':
error = None
p = get_product_by_name(name);
if p is None:
error = "Product existiert nicht"
return render_template('manage_beverages_edit.html', product_to_edit=p, error=error, user=get_user_by_name(session.get('name')))
if request.method == 'POST':
p = Product()
#print request.form
p.id = request.form['id']
p.name = request.form['name']
p.price = float(request.form['price'])
if 'isshown' in request.form:
p.isshown = True
else:
p.isshown = False
update_product(p)
# update_user(u)
return redirect('/manage_beverages')
@app.route('/manage_beverages/add', methods=['POST', 'GET'])
@requires_baron
def manage_beverages_add():
if request.method == 'POST':
p = Product()
error = None
print request
p.name = request.form['name']
#if request.form['price'].isnumeric():
p.price = float(request.form['price'])
#else:
# error = "Preis muss eine Nummer sein."
if 'isshown' in request.form:
p.isshown = True
else:
p.isshown = False
if error is None:
add_product(p)
return render_template('manage_beverages_add.html', success="Konsumat hinzugefuegt.", user=get_user_by_name(session.get('name')))
return render_template('manage_beverages_add.html', error=error, user=get_user_by_name(session.get('name')))
return render_template('manage_beverages_add.html', user=get_user_by_name(session.get('name')))
@app.route('/consume') @app.route('/consume')
@requires_login @requires_login
def consume(): def consume():

View File

@@ -32,7 +32,8 @@ CREATE TABLE USERS(
CREATE TABLE PRODUCTS( CREATE TABLE PRODUCTS(
ID INTEGER PRIMARY KEY, ID INTEGER PRIMARY KEY,
NAME TEXT NOT NULL, NAME TEXT NOT NULL,
PRICE REAK NOT NULL PRICE REAL NOT NULL,
ISSHOWN BOOLEAN DEFAULT 0
); );
# The table CONSUMED contains all products that have been consumed, who it consumend, when it was consumed, and also if they have been payed allready, this is important because we do not want to have redunant data. # The table CONSUMED contains all products that have been consumed, who it consumend, when it was consumed, and also if they have been payed allready, this is important because we do not want to have redunant data.

6
run.py
View File

@@ -7,10 +7,10 @@ import thread
if __name__ == '__main__': if __name__ == '__main__':
#start gui #start gui
wx = wx.App() #wx = wx.App()
gui.MainWindow(None) #gui.MainWindow(None)
thread.start_new_thread(wx.MainLoop,()) #thread.start_new_thread(wx.MainLoop,())
# start flask # start flask
app.secret_key = urandom(24) app.secret_key = urandom(24)