#!/usr/bin/env python3 __author__ = 'progamler' import curses 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),) 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), ) 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) i = produkte.insert() db.execute(i, name='Wasser', preis=0.5, barcode='42600370288') db.execute(i, name='Over 9000', preis=9000.01, barcode='2') db.execute(i, name='l33t', preis=1337, barcode='3') db.execute(i, name='Clubmate 0.5', preis=1.5, barcode='4029764001807') u = user.insert() db.execute(u, barcode='23', name='proGamler') def return_price(produkt): db = create_engine(db_uri) metadata = MetaData(db) metadata.reflect() produkte = Table('produkte', metadata, autoload=True) 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: 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', 'barcode']).where(user.c.barcode == code) result = db.execute(s) x = result.fetchone() return x def isuser(code): name = user(code) try: print(name.name) return True except: return False def logout(x): if x == 666: return True else: return False 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) if __name__ == "__main__": x = 0 name = '' list = [] userbarcode = '' 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): 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() 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()