Files
baroness/app/database.py
Ulrich Knechtelsdorfer 79bcf2e8ca - add: add beverages
2016-02-13 22:05:49 +01:00

179 lines
4.8 KiB
Python

import sqlite3
from flask import g
from app import app
from user import User
from product import Product
from consumption import Consumption
import datetime
DATABASE = 'test/database.db'
def get_db():
db = getattr(g, '_database',None)
if db is None:
db = g._database = sqlite3.connect(DATABASE)
return db
@app.teardown_appcontext
def close_connection(exception):
db = getattr(g,'_database', None)
if db is not None:
db.close()
def query_db(query, args=(), one=False):
closeflag = False
try:
db = get_db()
except RuntimeError:
print "GUI DB acces"
db = sqlite3.connect(DATABASE)
closeflag = True
print query
print args
#print "Sqlite: " + query % args
cur = db.execute(query, args)
rows = cur.fetchall()
cur.close()
if closeflag is True:
db.close()
return (rows[0] if rows else None) if one else rows
def get_user(u):
row = query_db("SELECT * FROM USERS WHERE NAME = ?", [u.name], one=True)
u = User()
if row is None:
return None
u.id=row[0]
u.name=row[1]
u.password=row[2]
u.longname=row[3]
u.email=row[4]
u.rfid_id=row[5]
u.isblack=row[6]
u.isbaron=row[7]
u.isshown=row[8]
print u
return u
def get_user_by_name(name):
row = query_db("SELECT * FROM USERS WHERE NAME = ?", [name], one=True)
u = User()
if row is None:
return None
u.id=row[0]
u.name=row[1]
u.password=row[2]
u.longname=row[3]
u.email=row[4]
u.rfid_id=row[5]
u.isblack=row[6]
u.isbaron=row[7]
u.isshown=row[8]
print u
return u
def get_users():
rows = query_db("SELECT * FROM USERS")
users = []
for row in rows:
u = User()
u.id=row[0]
u.name=row[1]
u.password=row[2]
u.longname=row[3]
u.email=row[4]
u.rfid_id=row[5]
u.isblack=row[6]
u.isbaron=row[7]
u.isshown=row[8]
users.append(u)
return users
def add_user(u):
query_db("INSERT INTO USERS (NAME, PASSWORD, LONGNAME, EMAIL, RFID_ID) VALUES (? ,? ,?, ?, ?)", (u.name, u.password, u.longname, u.email, u.rfid_id))
get_db().commit()
def update_user(u):
#query_db("UPDATE users SET (NAME, LONGNAME, EMAIL, RFID_ID, ISBLACK, ISBARON, ISSHOWN) VALUES (?, ?, ?, ?, ?, ?, ?) WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.id))
query_db("UPDATE users SET NAME=?, LONGNAME=?, EMAIL=?, RFID_ID=?, ISBLACK=?, ISBARON=?, ISSHOWN=? WHERE ID=?", (u.name, u.longname, u.email, u.rfid_id, u.isblack, u.isbaron, u.isshown, u.id))
get_db().commit()
def get_products():
rows = query_db("SELECT * FROM PRODUCTS")
products = []
for row in rows:
p = Product()
p.id = row[0]
p.name = row[1]
p.price = row[2]
p.isshown = row[3]
products.append(p)
return products
def get_product_by_id(id):
row = query_db("SELECT * FROM PRODUCTS WHERE ID = ?", [str(id)], one=True)
# print row
p = Product()
p.id = row[0]
p.name = row[1]
p.price = row[2]
p.isshown = row[3]
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):
if user is None and startdate is None and enddate is None:
rows = query_db('SELECT * FROM CONSUMED')
consumed = []
for row in rows:
#ID|PRODNR|CONSUMER|PRICE|TIME
c = Consumption()
c.id = int(row[0])
c.prodnr = int(row[1])
c.consumer = int(row[2])
#2016-01-27 12:59:04
c.price = float(row[3])
c.time = datetime.datetime.strptime(row[4], "%Y-%m-%d %H:%M:%S")
consumed.append(c)
return consumed
def add_consume(username, productid):
consumerid = query_db("SELECT ID FROM USERS WHERE NAME = ?", [username], one=True)
print "consumerid = "
print consumerid
consumerid = int(consumerid[0])
product = get_product_by_id(productid)
#INSERT INTO USERS (NAME, PASSWORD, LONGNAME, EMAIL, RFID_ID) VALUES (? ,? ,?, ?, ?)", (u.name, u.password, u.longname, u.email, u.rfid_id))
query_db("INSERT INTO CONSUMED (PRODNR, CONSUMER, PRICE, TIME) VALUES (?, ?, ?, ?)", (str(product.id), str(consumerid), product.price, datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")))
get_db().commit()
print "consumed"