some cleanup and rewrite

This commit is contained in:
Jan-Philipp Warmers 2014-04-19 14:31:04 +02:00
parent 9a1e944938
commit 0e3dd402b8
1 changed files with 104 additions and 59 deletions

View File

@ -1,35 +1,38 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
__author__ = 'progamler' __author__ = 'progamler'
from os import system
import curses import curses
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey, create_engine import datetime
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey, create_engine, Date, func
from sqlalchemy.sql import select from sqlalchemy.sql import select
# Config foo # Config foo
db_uri = 'sqlite:///./db.sqlite' db_uri = 'sqlite:///./db.sqlite'
#produkte = Table('produkte', metadata, #produkte = Table('produkte', metadata,
# Column('barcode', Integer, primary_key=True), # Column('barcode', Integer, primary_key=True),
# Column('name', String(40)), # Column('name', String(40)),
# Column('preis', Integer),) # Column('preis', Integer),)
def create_db(): def create_db():
db = create_engine(db_uri) db = create_engine(db_uri)
metadata = MetaData() metadata = MetaData()
produkte = Table('produkte', metadata, produkte = Table('produkte', metadata,
Column('barcode', Integer, primary_key=True), Column('barcode', Integer, primary_key=True),
Column('name', String(40)), Column('name', String(40)),
Column('preis', Integer),) Column('preis', Integer), )
users = Table('user', metadata, user = Table('user', metadata,
Column('barcode', Integer, primary_key=True), Column('barcode', Integer, primary_key=True),
Column('name', String(40)),) Column('name', String(40)), )
#transaktion = Table('transaktion', metadata, transaktion = Table('transaktion', metadata,
#Column('produkt', Integer, ForeignKey('produkte.barcode')), Column('id', Integer, primary_key=True),
#Column('user', Integer ,ForeignKey('users.barcode'))) Column('produkt', Integer, ForeignKey('produkte.barcode')),
Column('user', Integer, ForeignKey('user.barcode')),
Column('time', Date, server_default=func.now()), sqlite_autoincrement=True)
metadata.create_all(db) metadata.create_all(db)
@ -39,9 +42,8 @@ def create_db():
db.execute(i, name='l33t', preis=1337, barcode='3') db.execute(i, name='l33t', preis=1337, barcode='3')
db.execute(i, name='Clubmate 0.5', preis=1.5, barcode='4029764001807') db.execute(i, name='Clubmate 0.5', preis=1.5, barcode='4029764001807')
u = users.insert() u = user.insert()
db.execute(u, barcode='23', name='proGamler') db.execute(u, barcode='23', name='proGamler')
def return_price(produkt): def return_price(produkt):
@ -50,83 +52,126 @@ def return_price(produkt):
metadata.reflect() metadata.reflect()
produkte = Table('produkte', metadata, autoload=True) produkte = Table('produkte', metadata, autoload=True)
s = select(['name', 'preis']).where(produkte.c.barcode == produkt) s = select(['name', 'preis', 'barcode']).where(produkte.c.barcode == produkt)
result = db.execute(s) result = db.execute(s)
return result.fetchone() return result.fetchone()
def isproduct(code): def isproduct(code):
foo = return_price(code) foo = return_price(code)
try : try:
print(foo.name) print(foo.name)
return True return True
except: except:
return False return False
def user(code): def user(code):
db = create_engine(db_uri) db = create_engine(db_uri)
metadata = MetaData(db) metadata = MetaData(db)
metadata.reflect() metadata.reflect()
user = Table('user', metadata, autoload=True) user = Table('user', metadata, autoload=True)
s = select(['name']).where(user.c.barcode == code) s = select(['name', 'barcode']).where(user.c.barcode == code)
result = db.execute(s) result = db.execute(s)
x = result.fetchone() x = result.fetchone()
return x.name
return x
def isuser(code): def isuser(code):
name = user(code)
try: try:
name = user(code) print(name.name)
return True return True
except: except:
return False return False
def logout(x): def logout(x):
if x == 666: if x == 666:
return True return True
else: else:
return False return False
x = 0
name = ''
list = []
while x != int('01'):
screen = curses.initscr()
screen.clear() def count(date):
screen.border(0) db = create_engine(db_uri)
screen.addstr(2, 2, "Please Scan Code") metadata = MetaData(db)
screen.refresh() metadata.reflect()
if x != 0:
if isproduct(x): trans = Table('transaktion', metadata, autoload=True)
pro = return_price(x) user = Table('transaktion', metadata, autoload=True)
screen.addstr(4, 4, pro.name)
list.append(x) current_time = datetime.timedelta(weeks=date)
elif isuser(x): s = select(['id','user']).where(trans.c.time > current_time)
name = user(x) result = db.execute(s)
screen.addstr(4, 4, "Du wurdest eingeloggt")
elif logout(x): for a in result:
name = '' print(a)
list = []
screen.addstr(2,30, name) if __name__ == "__main__":
preis = 0 x = 0
y = 6 name = ''
for a in list: list = []
foo = return_price(a) userbarcode = ''
screen.addstr(y,30, str(foo.preis)) while x != int('01'):
screen.addstr(y,4, foo.name) screen = curses.initscr()
y = y+1
preis = preis+foo.preis
screen.addstr(y+1,4, "----------------------------------------------")
screen.addstr(y+2,4, "Gesamtsumme:")
screen.addstr(y+2,30, str(preis))
k = screen.getstr(3,3,60).decode('utf-8').rstrip() screen.clear()
if k != '': screen.border(0)
x = int(k) screen.addstr(2, 2, "Please Scan Code")
else: screen.refresh()
x = 0 if x != 0:
if isproduct(x):
pro = return_price(x)
screen.addstr(4, 4, pro.name)
list.append(x)
elif isuser(x):
foo = user(x)
name = foo.name
userbarcode = foo.barcode
screen.addstr(4, 4, "Du wurdest eingeloggt")
elif logout(x):
if userbarcode:
db = create_engine(db_uri)
metadata = MetaData(db)
metadata.reflect()
curses.endwin() trans = Table('transaktion', metadata, autoload=True)
trans_o = trans.insert()
for a in list:
foo = return_price(a)
db.execute(trans_o,
produkt=foo.barcode,
user=userbarcode
)
name = ''
list = []
screen.addstr(2, 30, name)
preis = 0
y = 6
for a in list:
foo = return_price(a)
screen.addstr(y, 30, str(foo.preis))
screen.addstr(y, 4, foo.name)
y = y + 1
preis = preis + foo.preis
screen.addstr(y + 1, 4, "----------------------------------------------")
screen.addstr(y + 2, 4, "Gesamtsumme:")
screen.addstr(y + 2, 30, str(preis))
k = screen.getstr(3, 3, 60).decode('utf-8').rstrip()
try:
x = int(k)
except:
x = 0
curses.endwin()