2020-08-20 06:37:24 +00:00
import traceback
from datetime import datetime
from datetime import timedelta
from geruecht . exceptions import DatabaseExecption
class Base :
def get_free_drink_list_config ( self , id ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' select * from free_drink_list_config where id= { id } ' )
data = cursor . fetchone ( )
if data [ ' drink_id ' ] != None :
data [ ' drink ' ] = self . getDrinkPrice ( data [ ' drink_id ' ] )
data [ ' free_drink_types ' ] = self . get_free_drink_list_types_for_drink ( data [ ' id ' ] )
return data
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def get_free_drink_list_configs ( self ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( " select * from free_drink_list_config " )
retVal = cursor . fetchall ( )
for data in retVal :
if data [ ' drink_id ' ] != None :
data [ ' drink ' ] = self . getDrinkPrice ( data [ ' drink_id ' ] )
data [ ' free_drink_types ' ] = self . get_free_drink_list_types_for_drink ( data [ ' id ' ] )
return retVal
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def set_free_drink_list_config ( self , free_drink_list_config ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' insert into free_drink_list_config (drink_id, label, price) values ( { free_drink_list_config [ " drink " ] [ " id " ] } , " { free_drink_list_config [ " label " ] } " , { free_drink_list_config [ " price " ] } ) ' )
self . db . connection . commit ( )
2020-08-23 19:14:43 +00:00
cursor . execute ( f ' select id from free_drink_list_config where drink_id= { free_drink_list_config [ " drink " ] [ " id " ] } and label= " { free_drink_list_config [ " label " ] } " and price= { free_drink_list_config [ " price " ] } ' )
data = cursor . fetchone ( )
for free_drink_type in free_drink_list_config [ " free_drink_types " ] :
cursor . execute (
f ' insert into free_drink_list_type_config (free_drink_list_config_id, free_drink_list_type_id) values ( { data [ " id " ] } , { free_drink_type [ " id " ] } ) ' )
self . db . connection . commit ( )
return self . get_free_drink_list_configs ( )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def update_free_drink_list_config ( self , free_drink_list_config ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' update free_drink_list_config set drink_id= { free_drink_list_config [ " drink " ] [ " id " ] } , label= " { free_drink_list_config [ " label " ] } " , price= { free_drink_list_config [ " price " ] } where id= { free_drink_list_config [ " id " ] } ' )
cursor . execute ( f ' delete from free_drink_list_type_config where free_drink_list_config_id= { free_drink_list_config [ " id " ] } ' )
for free_drink_type in free_drink_list_config [ " free_drink_types " ] :
cursor . execute ( f ' insert into free_drink_list_type_config (free_drink_list_config_id, free_drink_list_type_id) values ( { free_drink_list_config [ " id " ] } , { free_drink_type [ " id " ] } ) ' )
self . db . connection . commit ( )
return self . get_free_drink_list_configs ( )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def delete_free_drink_list_config ( self , free_drink_list_config ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' delete from free_drink_list_type_config where free_drink_list_config_id= { free_drink_list_config [ " id " ] } ' )
cursor . execute ( f ' delete from free_drink_list_history where free_drink_config_id= { free_drink_list_config [ " id " ] } ' )
cursor . execute ( f ' delete from free_drink_list_config where id= { free_drink_list_config [ " id " ] } ' )
self . db . connection . commit ( )
2020-08-20 06:37:24 +00:00
return self . get_free_drink_list_configs ( )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def get_free_drink_list_types ( self ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( ' select * from free_drink_list_type ' )
return cursor . fetchall ( )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def get_free_drink_list_types_for_drink ( self , id ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' select a.* from free_drink_list_type a, free_drink_list_type_config b where free_drink_list_config_id= { id } and b.free_drink_list_type_id=a.id ' )
return cursor . fetchall ( )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def get_free_drink_list_type ( self , name ) :
try :
cursor = self . db . connection . cursor ( )
if type ( name ) == str :
sql = f ' select * from free_drink_list_type where name= { name } '
elif type ( name ) == int :
sql = f ' select * from free_drink_list_type where id= { name } '
else :
raise DatabaseExecption ( " name as no type int or str. name= {} , type= {} " . format ( name , type ( name ) ) )
cursor . execute ( sql )
return cursor . fetchone ( )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def set_free_drink_list_history ( self , user , free_drink_list_config ) :
try :
cursor = self . db . connection . cursor ( )
2020-08-20 20:03:43 +00:00
if ' free_drink_list_reason_id ' in free_drink_list_config and ' description ' in free_drink_list_config :
sql = f ' insert into free_drink_list_history (timestamp, free_drink_config_id, user_id, free_drink_type_id, free_drink_list_reason_id, description) values ( " { datetime . now ( ) } " , { free_drink_list_config [ " id " ] } , { user . id } , { free_drink_list_config [ " free_drink_type_id " ] } , { free_drink_list_config [ " free_drink_list_reason_id " ] } , " { free_drink_list_config [ " description " ] } " ) '
else :
sql = f ' insert into free_drink_list_history (timestamp, free_drink_config_id, user_id, free_drink_type_id) values ( " { datetime . now ( ) } " , { free_drink_list_config [ " id " ] } , { user . id } , { free_drink_list_config [ " free_drink_type_id " ] } ) '
cursor . execute ( sql )
2020-08-20 06:37:24 +00:00
self . db . connection . commit ( )
return self . get_free_drink_list_history_by_user ( user )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def get_free_drink_list_history_by_user ( self , user ) :
try :
cursor = self . db . connection . cursor ( )
now = datetime . now ( )
worker = self . getWorker ( user , now )
2020-08-20 18:17:35 +00:00
if worker :
timestamp = worker [ " startdatetime " ]
else :
timestamp = datetime . now ( ) - timedelta ( minutes = 30 )
cursor . execute ( f ' select * from free_drink_list_history where timestamp>= " { timestamp } " and (user_id= { user . id } or free_drink_type_id=3) ' )
2020-08-20 06:37:24 +00:00
retVal = cursor . fetchall ( )
for data in retVal :
data [ ' timestamp ' ] = { ' year ' : data [ ' timestamp ' ] . year ,
' month ' : data [ ' timestamp ' ] . month ,
' day ' : data [ ' timestamp ' ] . day ,
' hour ' : data [ ' timestamp ' ] . hour ,
' minute ' : data [ ' timestamp ' ] . minute ,
' second ' : data [ ' timestamp ' ] . second }
data [ ' free_drink_config ' ] = self . get_free_drink_list_config ( data [ ' free_drink_config_id ' ] )
data [ ' free_drink_type ' ] = self . get_free_drink_list_type ( data [ ' free_drink_type_id ' ] )
2020-08-20 20:03:43 +00:00
data [ ' free_drink_list_reason ' ] = self . get_free_drink_list_reason ( data [ ' free_drink_list_reason_id ' ] ) if data [ ' free_drink_list_reason_id ' ] else None
2020-08-20 06:37:24 +00:00
return retVal
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
2020-08-23 21:17:12 +00:00
def get_free_drink_list_history_from_to ( self , from_date , to_date ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' select * from free_drink_list_history where timestamp>= " { from_date } " and timestamp<= " { to_date } " ' )
retVal = cursor . fetchall ( )
for data in retVal :
data [ ' timestamp ' ] = { ' year ' : data [ ' timestamp ' ] . year ,
' month ' : data [ ' timestamp ' ] . month ,
' day ' : data [ ' timestamp ' ] . day ,
' hour ' : data [ ' timestamp ' ] . hour ,
' minute ' : data [ ' timestamp ' ] . minute ,
' second ' : data [ ' timestamp ' ] . second }
data [ ' free_drink_config ' ] = self . get_free_drink_list_config ( data [ ' free_drink_config_id ' ] )
data [ ' free_drink_type ' ] = self . get_free_drink_list_type ( data [ ' free_drink_type_id ' ] )
data [ ' free_drink_list_reason ' ] = self . get_free_drink_list_reason ( data [ ' free_drink_list_reason_id ' ] ) if \
data [ ' free_drink_list_reason_id ' ] else None
return retVal
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
2020-08-20 06:37:24 +00:00
def update_free_drink_list_history ( self , free_drink_list_history ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' update free_drink_list_history set canceled= { free_drink_list_history [ " canceled " ] } where id= { free_drink_list_history [ " id " ] } ' )
self . db . connection . commit ( )
return True
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
2020-08-23 21:17:12 +00:00
2020-08-20 06:37:24 +00:00
def delete_free_drink_list_history ( self , free_drink_list_history ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' delete from free_drink_list_history where id= { free_drink_list_history [ " id " ] } ' )
self . db . connection . commit ( )
return True
2020-08-20 20:03:43 +00:00
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def get_free_drink_list_reason ( self , id ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' select * from free_drink_list_reason where id= { id } ' )
return cursor . fetchone ( )
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )
def get_free_drink_list_reasons ( self ) :
try :
cursor = self . db . connection . cursor ( )
cursor . execute ( f ' select * from free_drink_list_reason ' )
return cursor . fetchall ( )
2020-08-20 06:37:24 +00:00
except Exception as err :
traceback . print_exc ( )
self . db . connection . rollback ( )
raise DatabaseExecption ( " Something went wrong with Database: {} " . format ( err ) )