inital commit
This commit is contained in:
157
app/database.py
Normal file
157
app/database.py
Normal file
@@ -0,0 +1,157 @@
|
||||
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]
|
||||
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]
|
||||
return p
|
||||
|
||||
|
||||
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"
|
||||
Reference in New Issue
Block a user