예제 #1
0
 def traceConn(self, action):
     __debugTrace__ = False
     if __debugTrace__:
         global __conn_cnt_init__
         global __conn_cnt_connect__
         global __disconn_cnt_destr__
         global __disconn_cnt_disconn__
         if action == "INIT":
             __conn_cnt_init__ += 1
             __conn_cnt__ += 1
             if __conn_cnt__ > 1:
                 logger.info("DB INSTANCE CNT: %d" % __conn_cnt__)
                 logger.debug(traceback.format_exc())
             #print("CONN_CNT_INIT: %d"%__conn_cnt_init__)
         elif action == "CONNECT":
             __conn_cnt_connect__ += 1
             #print("CONN_CNT_CONNECT: %d"%__conn_cnt_connect__)
         elif action == "DISCONNECT":
             __disconn_cnt_disconn__ += 1
             #print("DISCONN_CNT_DISCONN: %d"%__disconn_cnt_disconn__)
             bcnt = (__conn_cnt_init__ + __conn_cnt_connect__) - (
                 __disconn_cnt_destr__ + __disconn_cnt_disconn__)
             #print("BALANCE: %d"%bcnt)
         elif action == "DESTR":
             __conn_cnt__ -= 1
             __disconn_cnt_destr__ += 1
예제 #2
0
def upsyncThread(url,ip,regid):
    while(1):
        upsyncEvent.wait(10)
        lastMod = requestLastModified(url,ip,regid,["items"])
        modDict = lastMod["modified"]
        lastTimestamp = modDict["items"]
             
        bdb=CheckInDatabase()
        try:
            oldscans = bdb.getUsersCntAt(lastTimestamp)[0]
            itemsRaw = bdb.getUsersSince(lastTimestamp)
            scans=[]
            for idx in range(0,len(itemsRaw)):
                cartId='1';
                barcode=itemsRaw[idx][0]+"10080" 
                timestamp=itemsRaw[idx][1]            
                scan=['1','%d'%cartId,'%d'%barcode,'0','%s'%timestamp,'%d'%oldscans]
                scans.append(scan)
                
            # registerid, id des scans, barcode, art (0=checkin, 1=verkauf (geht aber noch nicht)), 
            # Zeitstempel oldscans ist die Anzahl der Scans                
            # get items from database
            data={'modus':'upsync','ip':ip,'registerid':regid,'scans':scans,'oldscans':oldscans}
            dataJson=json.dumps(data).encode('utf-8')
            #params = '''modus=lastmodified&ip=192.168.2.10&registerid=10&table=["items","users"]'''
            headers = {u'content-type': u'application/x-www-form-urlencoded'}   
            #r=requests.request('GET', url=url, headers=headers, auth=('admin','adMIN16gs'))
            #if "SCHARFSCHALTEN"=="JA":
            r=requests.post(url=url, headers=headers, data=dataJson)
            #else:
            logger.info(str(data))        
        except Exception as e:
            logger.error(str(e))
            pass
예제 #3
0
 def setup(self, paydeskName, syncIp, syncPort):
     self.createTables()
     logger.info("Check local paydesk: %s, %s:%d" %
                 (paydeskName, syncIp, syncPort))
     paydesk = self.createLocalPaydesk(paydeskName, syncIp, syncPort)
     logger.info("Local paydesk: %s" % (str(paydesk)))
     return paydesk
예제 #4
0
    def createTables(self):
        try:
            #r"I:\Eclipse\basar\workspace\Database\test6.sqlitedb"
            #if not os.path.exists(self.db_file):
            #    os.makedirs(os.path.basename(self.db_file))
            logger.info("Create/Connect to database " + self.db_file)
            #self.conn =sqlite3.connect(self.db_file)
            #self.curs=self.conn.cursor()

            self.createPaydeskTable()

            self.createCartsTable()

            self.createArticleTable()

            self.createSoldTable()

            self.createSettingsTable()

            self.createCheckInTable()

        except Exception as e:
            self.__log__(e)
            self.__log__(traceback.format_exc())
            raise e
예제 #5
0
 def insertUserList(self, userlist):
     stmtList = []
     for user in userlist:
         if not re.match("^[0-9]+", user[1]):
             logger.info("User Invalid: " + str(user))
         else:
             stmt = "INSERT INTO users (id,number,code,nachname,vorname,tel,created,email)"
             stmt += " VALUES (?,?,?,?,?,?,?,?)"
             para = (user[0], user[1], user[2], user[3], user[4], user[5],
                     user[6], user[7])
             stmtList.append((stmt, para))
     ret = self.dbWriteMultiple(stmtList)
     return ret
예제 #6
0
def requestLastModified(url, ip, regid, tblList=["items","users"]):    
    #url = '''https://*****:*****@int.basar-teugn.de/kasse'''
    #data={'modus':'lastmodified','ip':'192.168.2.10','registerid':12,'table':["items","users"]}
    data={'modus':'lastmodified','ip':ip,'registerid':regid,'table':tblList}
    #params = '''modus=lastmodified&ip=192.168.2.10&registerid=10&table=["items","users"]'''
    headers = {u'content-type': u'application/x-www-form-urlencoded'}   
    #r=requests.request('GET', url=url, headers=headers, auth=('admin','adMIN16gs'))
    r=requests.post(url=url, headers=headers, data=data)
    logger.info(str(r.status_code)+"\n"+str(r.reason))
    logger.info(r.text)
    items=json.loads(r.text)         # r.text holds the payload data
    '''
    {"message":"Wiederholter Sync erfolgreich.","modified":{"items":"2017-08-16 08:01:40","users":"2017-08-17 07:20:44"}}
    '''
    return items
예제 #7
0
파일: CheckIn.py 프로젝트: sema19/Basar2018
Created on Sep 4, 2018

@author: sedlmeier
'''

import CheckInWebserver
import upsyncCheckIn
import configparser
import webbrowser

from checkInLogger import logger
    
if __name__ == '__main__':

    # start webserver
    logger.info("Start Internal Webserver")
    
    cfg = configparser.ConfigParser()
    cfg.read('checkin.cfg')
    
    port=cfg.getint("ExtWebserver","Port")
    url=cfg.get("WebSync","Url")
    ip = cfg.get("WebSync","AdapterIp")
    regid=cfg.get("WebSync","RegisterId")
    
    
    CheckInWebserver.startWebserver(port)
    #upsyncCheckIn.startUpsyncThread(url, ip, regid)
    
    webbrowser.open("http://%s:%d/%s"%("127.0.0.1",
                                       port,