From 0e3dd402b8eca9616c338b5a03366e6f0a5588e9 Mon Sep 17 00:00:00 2001 From: Jan-Philipp Warmers Date: Sat, 19 Apr 2014 14:31:04 +0200 Subject: [PATCH] some cleanup and rewrite --- preisanzeige/main.py | 163 +++++++++++++++++++++++++++---------------- 1 file changed, 104 insertions(+), 59 deletions(-) diff --git a/preisanzeige/main.py b/preisanzeige/main.py index 6abef5b..ebae285 100755 --- a/preisanzeige/main.py +++ b/preisanzeige/main.py @@ -1,35 +1,38 @@ #!/usr/bin/env python3 __author__ = 'progamler' -from os import system 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 + # Config foo db_uri = 'sqlite:///./db.sqlite' #produkte = Table('produkte', metadata, - # Column('barcode', Integer, primary_key=True), - # Column('name', String(40)), - # Column('preis', Integer),) +# Column('barcode', Integer, primary_key=True), +# Column('name', String(40)), +# Column('preis', Integer),) def create_db(): db = create_engine(db_uri) metadata = MetaData() produkte = Table('produkte', metadata, - Column('barcode', Integer, primary_key=True), - Column('name', String(40)), - Column('preis', Integer),) - users = Table('user', metadata, - Column('barcode', Integer, primary_key=True), - Column('name', String(40)),) - #transaktion = Table('transaktion', metadata, - #Column('produkt', Integer, ForeignKey('produkte.barcode')), - #Column('user', Integer ,ForeignKey('users.barcode'))) + Column('barcode', Integer, primary_key=True), + Column('name', String(40)), + Column('preis', Integer), ) + user = Table('user', metadata, + Column('barcode', Integer, primary_key=True), + Column('name', String(40)), ) + transaktion = Table('transaktion', metadata, + Column('id', Integer, primary_key=True), + 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) @@ -39,9 +42,8 @@ def create_db(): db.execute(i, name='l33t', preis=1337, barcode='3') 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') - def return_price(produkt): @@ -50,83 +52,126 @@ def return_price(produkt): metadata.reflect() 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) return result.fetchone() + def isproduct(code): foo = return_price(code) - try : + try: print(foo.name) return True except: return False + def user(code): db = create_engine(db_uri) metadata = MetaData(db) metadata.reflect() 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) x = result.fetchone() - return x.name + + return x + + def isuser(code): + name = user(code) try: - name = user(code) + print(name.name) return True except: return False + + def logout(x): if x == 666: return True else: return False -x = 0 -name = '' -list = [] -while x != int('01'): - screen = curses.initscr() - screen.clear() - screen.border(0) - screen.addstr(2, 2, "Please Scan Code") - screen.refresh() - if x != 0: - if isproduct(x): - pro = return_price(x) - screen.addstr(4, 4, pro.name) - list.append(x) - elif isuser(x): - name = user(x) - screen.addstr(4, 4, "Du wurdest eingeloggt") - elif logout(x): - name = '' - list = [] +def count(date): + db = create_engine(db_uri) + metadata = MetaData(db) + metadata.reflect() + + trans = Table('transaktion', metadata, autoload=True) + user = Table('transaktion', metadata, autoload=True) + + current_time = datetime.timedelta(weeks=date) + s = select(['id','user']).where(trans.c.time > current_time) + result = db.execute(s) + + for a in result: + print(a) - 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)) +if __name__ == "__main__": + x = 0 + name = '' + list = [] + userbarcode = '' + while x != int('01'): + screen = curses.initscr() - k = screen.getstr(3,3,60).decode('utf-8').rstrip() - if k != '': - x = int(k) - else: - x = 0 + screen.clear() + screen.border(0) + screen.addstr(2, 2, "Please Scan Code") + screen.refresh() + 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()