#!/opt/local/bin/python3.0 import sqlite3 as sqlite #from pysqlite2 import dbapi2 as sqlite from sys import exit from datetime import datetime import os, shutil from pruefpunkte import pruefpunkte, pruefpunktefillG11 from Navision import NAV def logtest (level, msg): print (msg) def errlogtest (msg): print (msg) def connectdb (dbfile): """ Create connection to database return DB Object user gets information if failure """ print ("Verbindung zu %s herstellen" %dbfile) try: db = sqlite.connect (dbfile) return db except: print ("Konnte DB Verbindung nicht herstellen") exit (1) class DB: # Database Stuff # -------------- def __init__ (self, dbfile, talogfile, log, errlog): self.db = connectdb (dbfile) self.talogfile = talogfile self.log = log self.errlog = errlog def executesql (self, dbstring, arguments = ()): """ Fuehre den uebergebenen SQL-Befehl aus und liefere ein Cursor-Objekt zurueck. """ try: cursor = self.db.cursor () cursor.execute (dbstring, arguments) except sqlite.Error as e: print ("An error occurred:", e.args[0]) raise Warning except OperationalError: #, msg: print ("Datenbankausfuehrung fehlgeschlagen. Ausgeloest durch: " + dbstring) raise Warning except IntegrityError: #, msg: print ("Doppelter Eintrag. Ausgeloest durch: " + dbstring) raise Warning except ProgrammingError: #, msg: print ("Fehlerhaftes SQL. Ausgeloest durch: " + dbstring) raise Warning except Warning: #, msg: pass #Build Transaction Log if (dbstring.find ('DELETE') >= 0) or\ (dbstring.find ('INSERT') >= 0) or\ (dbstring.find ('UPDATE') >= 0): file = open (self.talogfile, "a") dt = datetime.now () file.write ("%4d-%02d-%02d %02d:%02d:%02d.%06d: " %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond)) file.write (dbstring + ";\n") file.close () self.db.commit () return cursor # BDE allgemein #------------------ def bde (self): """ Return all Data of BE """ try: cursor = self.executesql ("SELECT * FROM bde;") except: return None res = cursor.fetchall () return res def addbde (self, data, anlage = 'Anlage'): """ Add Processdata without station information """ try: if anlage == 'Hand': cursor = self.executesql ("INSERT OR REPLACE INTO bde (dmc, startts, ladungstraeger, seriennr, anlage) VALUES ('%(dmc)s', '%(startts)s', '%(ladungstraeger)s', '%(seriennr)s', 'Hand');" % data) else: cursor = self.executesql ("INSERT OR REPLACE INTO bde (dmc, startts, ladungstraeger, seriennr) VALUES ('%(dmc)s', '%(startts)s', '%(ladungstraeger)s', '%(seriennr)s');" % data) except: print ("Couldnt insert into BDE") raise Warning def getbde (self, dmc): """ Get Processdata """ try: cursor = self.executesql ("SELECT dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus FROM bde WHERE dmc = '%s';" % dmc) except: print ("Couldnt read from BDE") return cursor.fetchall () def checkbde (self, dmc): """ """ try: cursor = self.executesql ("SELECT dmc FROM bde WHERE dmc = '%s';" % dmc) except: print ("Couldnt read from BDE") l = len (cursor.fetchall ()) return l def updatebde (self, dmc, field, value): """ Updates BDE information """ l = self.getbde (dmc) oldlt = '' if len (l) == 0: print ('Missing bde entry for DMC %s create empty one' % dmc) self.addbde ({'dmc' : dmc, 'startts' : '', 'ladungstraeger' : '', 'seriennr' : ''}) else: oldlt = l[0][3] nval = value if field == 'ladungstraeger': if '\x00' in value: self.errlog ("Nullvalue in LT Data") return if not value in (oldlt.split (',')): nval = oldlt + ',' + value else: return try: cursor = self.executesql ("UPDATE bde SET %s = '%s' WHERE dmc = '%s';" % (field, nval, dmc)) except: print ("Couldnt update BDE") raise Warning def addpruefzelle1 (self, data): """ Add Processdata 01 - pruefzelle 1 and create BDE data """ if len (self.getpruefzelle1 (data['dmc'])): self.errlog ('PD01 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO pruefzelle1 (dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(pp01)s', '%(pp02)s', '%(pp03)s', '%(pp04)s', '%(pp05)s', '%(pp06)s', '%(pp07)s', '%(pp08)s', '%(pp09)s', '%(pp10)s', '%(pp11)s', '%(pp12)s', '%(pp13)s', '%(pp14)s', '%(pp15)s', '%(pp16)s', '%(pp17)s', '%(pp18)s', '%(pp19)s', '%(pp20)s', '%(pp21)s', '%(pp22)s', '%(pp23)s', '%(pp24)s', '%(pp25)s', '%(pp26)s', '%(pp27)s', '%(pp28)s', '%(pp29)s', '%(pp30)s', '%(pp31)s', '%(pp32)s', '%(pp33)s', '%(pp34)s', '%(pp35)s', '%(pp36)s', '%(pp37)s', '%(pp38)s', '%(pp39)s', '%(pp40)s');" % data) except: print ("Couldnt insert PD01 pruefzelle1") raise Warning if self.checkbde (data['dmc']) > 0: self.errlog ('BDE Data for %s already exists - Overwrite' % data['dmc']) self.addbde (data) self.updatebde (data['dmc'], 'pruefzelle1', data['bauteilstatus']) if data['dmc'] == 'n.i.O.': self.updatebde (data['dmc'], 'endts', data['endts']) self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') else: self.updatebde (data['dmc'], 'gesamtstatus', 'n.Durchlaufen') self.updatebde (data['dmc'], 'variante', data['bauteil'] + '-' + data['variante']) self.updatebde (data['dmc'], 'csv', '') def getpruefzelle1 (self, dmc): """ Get Processdata 01 - prufezelle1 """ try: cursor = self.executesql ("SELECT dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40 FROM pruefzelle1 WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD06 pruefzelle1") raise Warning return cursor.fetchall () def deletepruefzelle1 (self, dmc): """ Delete Pruefzelle1 info """ try: cursor = self.executesql ("DELETE FROM pruefzelle1 WHERE dmc = '%s';" % (dmc)) except: print ("Couldnt delete from Pruefzelle1") raise Warning def addblindniet (self, data, store = 1): """ Add Processdata 05 - blindniet and update BDE data """ if len (self.getblindniet (data['dmc'])): self.errlog ('PD05 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO blindniet (dmc, startts, endts, DGBM8status01, DGBM8status02, DGBM8status03, DGBM8status04, NietM8status01, NietM8status02, NietM6status01, NietM6status02, NietM6status03, NietM6status04, NietM6status05, DGBM8M01, DGBM8D01, DGBM8W01, DGBM8T01, DGBM8M02, DGBM8D02, DGBM8W02, DGBM8T02, DGBM8M03, DGBM8D03, DGBM8W03, DGBM8T03, DGBM8M04, DGBM8D04, DGBM8W04, DGBM8T04, NietM8F01, NietM8S01, NietM8F02, NietM8S02, NietM6F01, NietM6S01, NietM6F02, NietM6S02, NietM6F03, NietM6S03, NietM6F04, NietM6S04, NietM6F05, NietM6S05) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(DGBM8status01)s', '%(DGBM8status02)s', '%(DGBM8status03)s', '%(DGBM8status04)s', '%(NietM8status01)s', '%(NietM8status02)s', '%(NietM6status01)s', '%(NietM6status02)s', '%(NietM6status03)s', '%(NietM6status04)s', '%(NietM6status05)s', '%(DGBM8M01)s', '%(DGBM8D01)s', '%(DGBM8W01)s', '%(DGBM8T01)s', '%(DGBM8M02)s', '%(DGBM8D02)s', '%(DGBM8W02)s', '%(DGBM8T02)s', '%(DGBM8M03)s', '%(DGBM8D03)s', '%(DGBM8W03)s', '%(DGBM8T03)s', '%(DGBM8M04)s', '%(DGBM8D04)s', '%(DGBM8W04)s', '%(DGBM8T04)s', '%(NietM8F01)s', '%(NietM8S01)s', '%(NietM8F02)s', '%(NietM8S02)s', '%(NietM6F01)s', '%(NietM6S01)s', '%(NietM6F02)s', '%(NietM6S02)s', '%(NietM6F03)s', '%(NietM6S03)s', '%(NietM6F04)s', '%(NietM6S04)s', '%(NietM6F05)s', '%(NietM6S05)s');" % data) except: print ("Couldnt insert PD05 blindniet") raise Warning if store: self.addblindnietvalues (data); self.updatebde (data['dmc'], 'blindniet', data['bauteilstatus']) self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger']) if data['bauteilstatus'] == 'n.i.O.': self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') def addblindnietvalues (self, data): """ Store Setvalues of Blindniet """ try: cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 1, '%(startts)s', '%(NietM6status01)s', '%(NietM6F01)s', '%(NietM6S01)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 2, '%(startts)s', '%(NietM6status02)s', '%(NietM6F02)s', '%(NietM6S02)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 3, '%(startts)s', '%(NietM6status03)s', '%(NietM6F03)s', '%(NietM6S03)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 4, '%(startts)s', '%(NietM6status04)s', '%(NietM6F04)s', '%(NietM6S04)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 5, '%(startts)s', '%(NietM6status05)s', '%(NietM6F05)s', '%(NietM6S05)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm8 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 1, '%(startts)s', '%(NietM8status01)s', '%(NietM8F01)s', '%(NietM8S01)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm8 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 2, '%(startts)s', '%(NietM8status02)s', '%(NietM8F02)s', '%(NietM8S02)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietdgb (dmc, nr, ts, status, M, D, W, T) VALUES ('%(dmc)s', 1, '%(startts)s', '%(DGBM8status01)s', '%(DGBM8M01)s', '%(DGBM8D01)s', '%(DGBM8W01)s', '%(DGBM8T01)s');" % data) cursor = self.executesql ("INSERT OR REPLACE INTO blindnietdgb (dmc, nr, ts, status, M, D, W, T) VALUES ('%(dmc)s', 2, '%(startts)s', '%(DGBM8status02)s', '%(DGBM8M02)s', '%(DGBM8D02)s', '%(DGBM8W02)s', '%(DGBM8T02)s');" % data) except: print ("Couldnt store blindniet values") raise Warning def deleteblindniet (self, dmc): """ Delete Blindniet info """ try: cursor = self.executesql ("DELETE FROM blindniet WHERE dmc = '%s';" % (dmc)) except: print ("Couldnt delete from blindniet") raise Warning def getblindniet (self, dmc): """ Get Processdata 05 - blindniet """ try: cursor = self.executesql ("SELECT dmc, startts, endts, DGBM8status01, DGBM8status02, DGBM8status03, DGBM8status04, NietM8status01, NietM8status02, NietM6status01, NietM6status02, NietM6status03, NietM6status04, NietM6status05, DGBM8M01, DGBM8D01, DGBM8W01, DGBM8T01, DGBM8M02, DGBM8D02, DGBM8W02, DGBM8T02, DGBM8M03, DGBM8D03, DGBM8W03, DGBM8T03, DGBM8M04, DGBM8D04, DGBM8W04, DGBM8T04, NietM8F01, NietM8S01, NietM8F02, NietM8S02, NietM6F01, NietM6S01, NietM6F02, NietM6S02, NietM6F03, NietM6S03, NietM6F04, NietM6S04, NietM6F05, NietM6S05 FROM blindniet WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD05 blindniet") raise Warning return cursor.fetchall () def getblindnietdict (self, dmc): """ Get Processdata 06 - cclip as dict """ ret_val = {} keys = ['dmc', 'startts', 'endts', 'DGBM8status01', 'DGBM8status02', 'DGBM8status03', 'DGBM8status04', 'NietM8status01', 'NietM8status02', 'NietM6status01', 'NietM6status02', 'NietM6status03', 'NietM6status04', 'NietM6status05', 'DGBM8M01', 'DGBM8D01', 'DGBM8W01', 'DGBM8T01', 'DGBM8M02', 'DGBM8D02', 'DGBM8W02', 'DGBM8T02', 'DGBM8M03', 'DGBM8D03', 'DGBM8W03', 'DGBM8T03', 'DGBM8M04', 'DGBM8D04', 'DGBM8W04', 'DGBM8T04', 'NietM8F01', 'NietM8S01', 'NietM8F02', 'NietM8S02' , 'NietM6F01', 'NietM6S01', 'NietM6F02', 'NietM6S02', 'NietM6F03', 'NietM6S03', 'NietM6F04', 'NietM6S04', 'NietM6F05', 'NietM6S05'] d = self.getblindniet (dmc) if len (d): for i in range (len (d [0])): ret_val [keys [i]] = d [0][i] return ret_val def addputzzelle (self, data): """ Add Processdata 02/03 - putzzelle and update BDE data """ if len (self.getputzzelle (data['dmc'])): self.errlog ('PD02/03 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO putzzelle (dmc, startts, endts, aufnahme) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(aufnahme)s');" % data) except: print ("Couldnt insert PD02/03 putzzelle") raise Warning self.updatebde (data['dmc'], 'putzzelle', data['bauteilstatus']) self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger']) if data['bauteilstatus'] == 'n.i.O.': self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') def getputzzelle (self, dmc): """ Get Processdata 06 - putzzelle """ try: cursor = self.executesql ("SELECT dmc, startts, endts, aufnahme FROM putzzelle WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD0203 putzzelle") raise Warning return cursor.fetchall () def addchiron (self, data): """ Add Processdata 99 - chiron and update BDE data """ if len (self.getchiron (data['dmc'])): self.errlog ('PD99 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO chiron (dmc, startts, endts, chiron) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(chiron)s');" % data) except: print ("Couldnt insert PD99 chiron") raise Warning self.updatebde (data['dmc'], 'chiron', data['bauteilstatus']) #self.updatebde (data['dmc'], 'variante', data['variante']) self.updatebde (data['dmc'], 'variante', data['bauteil'] + '-' + data['variante']) self.log (1,'PD99 - Change variante') self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger']) if data['bauteilstatus'] == 'n.i.O.': self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') def getchiron (self, dmc): """ Get Processdata 06 - chiron """ try: cursor = self.executesql ("SELECT dmc, startts, endts, chiron FROM chiron WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD0203 putzzelle") raise Warning return cursor.fetchall () def addbajonettclip (self, data, store = 1): """ Add Processdata 06 - bajonettclip and update BDE data """ if len (self.getbajonettclip (data['dmc'])): self.errlog ('PD06 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO bajonettclip (dmc, startts, endts, aufnahme, bajostatus01, bajostatus02, bajostatus03, bajostatus04) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(aufnahme)s', '%(bajostatus01)s', '%(bajostatus02)s', '%(bajostatus03)s', '%(bajostatus04)s');" % data) except: print ("Couldnt insert PD06 bajonettclip") raise Warning if store: self.updatebde (data['dmc'], 'bajonettclip', data['bauteilstatus']) self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger']) if data['bauteilstatus'] == 'n.i.O.': self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') def getbajonettclip (self, dmc): """ Get Processdata 06 - bajonettclip """ try: cursor = self.executesql ("SELECT dmc, startts, endts, aufnahme, bajostatus01, bajostatus02, bajostatus03, bajostatus04 FROM bajonettclip WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD06 bajonettclip") raise Warning return cursor.fetchall () def getbajonettclipdict (self, dmc): """ Get Processdata 06 - bajonett as dict """ ret_val = {} keys = ['dmc', 'startts', 'endts', 'aufnahme', 'bajostatus01', 'bajostatus02', 'bajostatus03', 'bajostatus04'] d = self.getbajonettclip (dmc) if len (d): for i in range (len (d [0])): ret_val [keys [i]] = d [0][i] return ret_val def deletebajonettclip (self, dmc): """ Delete Bajonettclip info """ try: cursor = self.executesql ("DELETE FROM bajonettclip WHERE dmc = '%s';" % (dmc)) except: print ("Couldnt delete from bajonettclip") raise Warning def addcclip (self, data, store = 1): """ Add Processdata 07 - cclip and update BDE data """ if len (self.getcclip (data['dmc'])): self.errlog ('PD07 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO cclip (dmc, startts, endts, aufnahme, clipstatus01, clipstatus02, clipstatus03, clipstatus04, clipstatus05, clipstatus06, clipstatus07, clipstatus08, clipstatus09, clipstatus10, clipstatus11, clipstatus12, clipstatus13, clipstatus14, clipstatus15, clipstatus16, clipstatus17, clipstatus18) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(aufnahme)s', '%(clipstatus01)s', '%(clipstatus02)s', '%(clipstatus03)s', '%(clipstatus04)s', '%(clipstatus05)s', '%(clipstatus06)s', '%(clipstatus07)s', '%(clipstatus08)s', '%(clipstatus09)s', '%(clipstatus10)s', '%(clipstatus11)s', '%(clipstatus12)s', '%(clipstatus13)s', '%(clipstatus14)s', '%(clipstatus15)s', '%(clipstatus16)s', '%(clipstatus17)s', '%(clipstatus18)s');" % data) except: print ("Couldnt insert PD07 cclip") raise Warning if store: self.updatebde (data['dmc'], 'cclip', data['bauteilstatus']) self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger']) if data['bauteilstatus'] == 'n.i.O.': self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') def getcclip (self, dmc): """ Get Processdata 07 - cclip """ try: cursor = self.executesql ("SELECT dmc, startts, endts, aufnahme, clipstatus01, clipstatus02, clipstatus03, clipstatus04, clipstatus05, clipstatus06, clipstatus07, clipstatus08, clipstatus09, clipstatus10, clipstatus11, clipstatus12, clipstatus13, clipstatus14, clipstatus15, clipstatus16, clipstatus17, clipstatus18 FROM cclip WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD07 cclip") raise Warning return cursor.fetchall () def getcclipdict (self, dmc): """ Get Processdata 07 - cclip as dict """ ret_val = {} keys = ['dmc', 'startts', 'endts', 'aufnahme', 'clipstatus01', 'clipstatus02', 'clipstatus03', 'clipstatus04', 'clipstatus05', 'clipstatus06', 'clipstatus07', 'clipstatus08', 'clipstatus09', 'clipstatus10', 'clipstatus11', 'clipstatus12', 'clipstatus13', 'clipstatus14', 'clipstatus15', 'clipstatus16', 'clipstatus17', 'clipstatus18'] d = self.getcclip (dmc) if len (d): for i in range (len (d [0])): ret_val [keys [i]] = d [0][i] return ret_val def deletecclip (self, dmc): """ Delete CClip info """ try: cursor = self.executesql ("DELETE FROM cclip WHERE dmc = '%s';" % (dmc)) except: print ("Couldnt delete from cclip") raise Warning def addmasseblech (self, data, store = 1): """ Add Processdata 08 - masseblech and update BDE data """ if len (self.getmasseblech (data['dmc'])): self.errlog ('PD08 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO masseblech (dmc, startts, endts, ausgleichselement, schallisolierung, masseblech, blindniet, kombimutter, fniet, sniet, mmutter, dmutter, wmutter, tmutter) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(ausgleichselement)s', '%(schallisolierung)s', '%(masseblech)s', '%(blindniet)s', '%(kombimutter)s' , '%(fniet)s', '%(sniet)s', '%(mmutter)s', '%(dmutter)s', '%(wmutter)s', '%(tmutter)s');" % data) except: print ("Couldnt insert PD08") raise Warning if store: self.updatebde (data['dmc'], 'masseblech', data['bauteilstatus']) self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger']) if data['bauteilstatus'] == 'n.i.O.': self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') def getmasseblech (self, dmc): """ Get Processdata 08 -masseblech """ try: cursor = self.executesql ("SELECT dmc, startts, endts, ausgleichselement, schallisolierung, masseblech, blindniet, kombimutter, fniet, sniet, mmutter, dmutter, wmutter, tmutter FROM masseblech WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD08 masseblech") raise Warning return cursor.fetchall () def deletemasseblech (self, dmc): """ Delete Masseblech info """ try: cursor = self.executesql ("DELETE FROM masseblech WHERE dmc = '%s';" % (dmc)) except: print ("Couldnt delete from masseblech") raise Warning def addnacharbeit (self, data): """ Add Processdata 09 and update BDE data """ #self.updatebde (data['dmc'], 'nacharbeit', data['bauteilstatus']) #self.updatebde (data['dmc'], 'endts', data['endts']) #if data['bauteilstatus'] == 'n.i.O.': try: l = self.getbde (data['dmc'])[0] except: self.log (1, 'PD09 keine BDE Daten %s abbruch' % data['dmc']) return 0 #dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus _states = {'pruefzelle1' : l[6], 'putzzelle' : l[7], 'chiron' : l[8], 'blindniet': l[9], 'bajonettclip': l[10], 'cclip': l[11], 'masseblech' : l[12] } _ges = l[17] _gesio = 1 #'Blindniet' if _states ['blindniet'] == 'n.Durchlaufen': self.log (5, 'PD09 Blindniet %s nDurchlaufen do nothing' % data['dmc']) _gesio = 0 elif _states ['blindniet'] == 'i.O.': self.log (5, 'PD09 Blindniet %s already i.O. do nothing' % data['dmc']) else: io = 1 for i in range (1, 5): if data['DGBM8status%02d' % i] == 'i.O. NA': self.log (5, 'PD09 DGBM8_%02d reworked updating part data M:%d D:%d W:%d' % (i, data['DGBM8M%02d' % i], data['DGBM8D%02d' % i], data['DGBM8W%02d' % i] )) self.updateinformation (data['dmc'], 'blindniet', 'DGBM8status%02d' % i, data['DGBM8status%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'DGBM8M%02d' % i, data['DGBM8M%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'DGBM8D%02d' % i, data['DGBM8D%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'DGBM8W%02d' % i, data['DGBM8W%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'DGBM8T%02d' % i, data['DGBM8T%02d' % i]) elif data['DGBM8status%02d' % i] == 'n.i.O.': self.log (5, 'PD09 DGBM8_%02d still n.i.O.' % (i)) io = 0 elif data['DGBM8status%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD09 DGBM8_%02d still n.Bearbeitet ' % (i)) io = 0 for i in range (1, 3): if data['NietM8status%02d' % i] == 'i.O. NA': self.log (5, 'PD09 NietM8_%02d reworked updating part data F:%d S:%d' % (i, data['NietM8F%02d' % i], data['NietM8S%02d' % i])) self.updateinformation (data['dmc'], 'blindniet', 'NietM8status%02d' % i, data['NietM8status%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'NietM8F%02d' % i, data['NietM8F%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'NietM8S%02d' % i, data['NietM8S%02d' % i]) elif data['NietM8status%02d' % i] == 'n.i.O.': self.log (5, 'PD09 NietM8_%02d still n.i.O.' % (i)) io = 0 elif data['NietM8status%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD09 NietM8_%02d still n.Bearbeitet' % (i)) io = 0 for i in range (1, 6): if data['NietM6status%02d' % i] == 'i.O. NA': self.log (5, 'PD09 NietM6_%02d reworked updating part data F:%d S:%d' % (i, data['NietM6F%02d' % i], data['NietM6S%02d' % i])) self.updateinformation (data['dmc'], 'blindniet', 'NietM6status%02d' % i, data['NietM6status%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'NietM6F%02d' % i, data['NietM6F%02d' % i]) self.updateinformation (data['dmc'], 'blindniet', 'NietM6S%02d' % i, data['NietM6S%02d' % i]) elif data['NietM6status%02d' % i] == 'n.i.O.': self.log (5, 'PD09 NietM6_%02d still n.i.O ' % (i)) io = 0 elif data['NietM6status%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD09 NietM6_%02d still n.Bearbeitet' % (i)) io = 0 if io: self.updatebde (data['dmc'], 'blindniet', 'i.O. NA') else: _gesio = 0 #'Bajonettclip' if _states ['bajonettclip'] == 'n.Durchlaufen': self.log (5, 'PD09 Bajonett %s nDurchlaufen do nothing' % ['dmc']) _gesio = 0 elif _states ['bajonettclip'] == 'i.O.': self.log (5, 'PD09 Bajonett %s i.O. do nothing' % ['dmc']) else: io = 1 for i in range (1, 5): if data['bajostatus%02d' % i] == 'i.O. NA': self.log (5, 'PD09 bajonett%02d reworked updating part data' % (i)) self.updateinformation (data['dmc'], 'bajonettclip', 'bajostatus%02d' % i, data['bajostatus%02d' % i]) elif data['bajostatus%02d' % i] == 'n.i.O.': self.log (5, 'PD09 bajonett%02d still n.i.O.' % (i)) io = 0 elif data['bajostatus%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD09 bajonett%02d still n.Bearbeitet' % (i)) io = 0 if io: self.updatebde (data['dmc'], 'bajonettclip', 'i.O. NA') else: _gesio = 0 #'CClip' if _states ['cclip'] == 'n.Durchlaufen': self.log (5, 'PD09 CClip %s nDurchlaufen do nothing' % data['dmc']) _gesio = 0 elif _states ['cclip'] == 'i.O.': self.log (5, 'PD09 CClip %s i.O. do nothing' % ['dmc']) else: io = 1 for i in range (1, 18): if data['clipstatus%02d' % i] == 'i.O. NA': self.log (5, 'PD09 CClip%02d reworked updating part data' % (i)) self.updateinformation (data['dmc'], 'cclip', 'clipstatus%02d' % i, data['clipstatus%02d' % i]) elif data['clipstatus%02d' % i] == 'n.i.O.': self.log (5, 'PD09 clipstatus%02d still n.i.O.' % (i)) io = 0 elif data['clipstatus%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD09 clipstatus%02d still n.Bearbeitet' % (i)) io = 0 if io: self.updatebde (data['dmc'], 'cclip', 'i.O. NA') else: _gesio = 0 #'Maseblech' if _states ['masseblech'] == 'n.Durchlaufen': self.log (5, 'PD09 Masseblech %s nDurchlaufen do nothing' % ['dmc']) _gesio = 0 elif _states ['masseblech'] == 'i.O.': self.log (5, 'PD09 Masseblech %s i.O. do nothing' % ['dmc']) else: io = 1 if data['kombimutter'] == 'i.O. NA': self.log (5, 'PD09 Kombimutter reworked updating part data M:%d D:%d W:%d' % (data['mmutter'], data['dmutter'], data['wmutter'] )) self.updateinformation (data['dmc'], 'masseblech', 'kombimutter', data['kombimutter']) self.updateinformation (data['dmc'], 'masseblech', 'mmutter', data['mmutter']) self.updateinformation (data['dmc'], 'masseblech', 'dmutter', data['dmutter']) self.updateinformation (data['dmc'], 'masseblech', 'wmutter', data['wmutter']) self.updateinformation (data['dmc'], 'masseblech', 'tmutter', data['tmutter']) elif data['kombimutter'] == 'n.i.O.': self.log (5, 'PD09 Kombimutter still n.i.O.') io = 0 elif data['kombimutter'] == 'n.Bearbeitet': self.log (5, 'PD09 Kombimutter still n.Bearbeitet') io = 0 if data['blindniet'] == 'i.O. NA': self.log (5, 'PD09 Niet reworked updating part data F:%d S:%d' % (int (data['fniet']), int (data['sniet']))) self.updateinformation (data['dmc'], 'masseblech', 'blindniet', data['blindniet']) self.updateinformation (data['dmc'], 'masseblech', 'fniet', data['fniet']) self.updateinformation (data['dmc'], 'masseblech', 'sniet', data['sniet']) elif data['blindniet'] == 'n.i.O.': self.log (5, 'PD09 Blindniet still n.i.O.') io = 0 elif data['blindniet'] == 'n.Bearbeitet': self.log (5, 'PD09 Blindniet still n.Bearbeitet') io = 0 if data['masseblech'] == 'i.O. NA': self.log (5, 'PD09 Masseblech reworked updating part data') self.updateinformation (data['dmc'], 'masseblech', 'masseblech', data['masseblech']) elif data['masseblech'] == 'n.i.O.': self.log (5, 'PD09 Masseblech still n.i.O.') io = 0 elif data['masseblech'] == 'n.Bearbeitet': self.log (5, 'PD09 Masseblech still n.Bearbeitet') io = 0 if data['ausgleichselement'] == 'i.O. NA': self.log (5, 'PD09 Ausgleichselement reworked updating part data') self.updateinformation (data['dmc'], 'masseblech', 'ausgleichselement', data['ausgleichselement']) elif data['ausgleichselement'] == 'n.i.O.': self.log (5, 'PD09 Ausgleichselement still n.i.O.') io = 0 elif data['ausgleichselement'] == 'n.Bearbeitet': self.log (5, 'PD09 Ausgleichselement still n.Bearbeitet') io = 0 if data['schallisolierung'] == 'i.O. NA': self.log (5, 'PD09 Schallisolierung reworked updating part data') self.updateinformation (data['dmc'], 'masseblech', 'schallisolierung', data['schallisolierung']) elif data['schallisolierung'] == 'n.i.O.': self.log (5, 'PD09 Schallisolierung still n.i.O.') io = 0 elif data['schallisolierung'] == 'n.Bearbeitet': self.log (5, 'PD09 Schallisolierung still n.Bearbeitet') io = 0 if io: self.updatebde (data['dmc'], 'masseblech', 'i.O. NA') else: _gesio = 0 if _gesio: self.log (5, 'PD09 All part data i.O. Part is i.O.') if _ges != 'i.O.': self.log (5, 'PD09 part not i.O. yet set i.O.') self.updatebde (data['dmc'], 'gesamtstatus', 'i.O. NA') #nav = NAV (path = "/srv/navision/", db = self) #nav.createcsv (data['dmc']) #try: # shutil.move ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share") #except: # self.errlog ("/srv/navision/share/%s.csv already esist" % data['dmc']) # os.rename ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share/%s.csv" % data['dmc']) #self.updatebde (data['dmc'], 'csv', 'erzeugt') def addnacharbeitg11 (self, data): """ Add Processdata 30 für G11 Hand / Rework and update BDE data """ #self.updatebde (data['dmc'], 'nacharbeit', data['bauteilstatus']) #self.updatebde (data['dmc'], 'endts', data['endts']) #if data['bauteilstatus'] == 'n.i.O.': try: l = self.getbde (data['dmc'])[0] except: self.log (1, 'PD30 keine BDE Daten %s abbruch' % data['dmc']) return 0 #dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus _states = {'pruefzelle1' : l[6], 'putzzelle' : l[7], 'chiron' : l[8], 'blindniet': l[9], 'bajonettclip': l[10], 'cclip': l[11], 'masseblech' : l[12] } _ges = l[17] _gesio = 1 #'Blindniet' if _states ['blindniet'] == 'n.Durchlaufen': self.log (5, 'PD30 Blindniet %s nDurchlaufen create Blindnietdata' % data['dmc']) bnkeys = ['dmc', 'startts', 'endts', 'DGBM8status01', 'DGBM8status02', 'DGBM8status03', 'DGBM8status04', 'NietM8status01', 'NietM8status02', 'NietM6status01', 'NietM6status02', 'NietM6status03', 'NietM6status04', 'NietM6status05', 'DGBM8M01', 'DGBM8D01', 'DGBM8W01', 'DGBM8T01', 'DGBM8M02', 'DGBM8D02', 'DGBM8W02', 'DGBM8T02', 'DGBM8M03', 'DGBM8D03', 'DGBM8W03', 'DGBM8T03', 'DGBM8M04', 'DGBM8D04', 'DGBM8W04', 'DGBM8T04', 'NietM8F01', 'NietM8S01', 'NietM8F02', 'NietM8S02' , 'NietM6F01', 'NietM6S01', 'NietM6F02', 'NietM6S02', 'NietM6F03', 'NietM6S03', 'NietM6F04', 'NietM6S04', 'NietM6F05', 'NietM6S05', 'ladungstraeger'] _bndata = {} _bnstatus = 'i.O. NA' for k in bnkeys: _bndata [k] = data [k] if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 %s still NiO so complete state is NiO' % k) _bnstatus = 'n.i.O.' _gesio = 0 _bndata ['bauteilstatus'] = _bnstatus self.addblindniet (_bndata, store = 0) self.updatebde (data['dmc'], 'blindniet', _bnstatus) elif _states ['blindniet'] in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 Blindniet %s already i.O. do nothing' % data['dmc']) else: self.log (5, 'PD30 check Blindniet values ') io = 1 dbdata = self.getblindnietdict (data['dmc']) for i in range (1, 5): if data['DGBM8status%02d' % i] == dbdata['DGBM8status%02d' % i]: self.log (5, 'PD30 DGBM8status%02d nothing changed in DB (old %s)' % (i, dbdata['DGBM8status%02d' % i])) elif data['DGBM8status%02d' % i] == 'i.O. NA': self.log (5, 'PD30 DGBM8_%02d reworked updating part data M:%d D:%d W:%d' % (i, data['DGBM8M%02d' % i], data['DGBM8D%02d' % i], data['DGBM8W%02d' % i] )) self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8status%02d' % i, data['DGBM8status%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8M%02d' % i, data['DGBM8M%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8D%02d' % i, data['DGBM8D%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8W%02d' % i, data['DGBM8W%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8T%02d' % i, data['DGBM8T%02d' % i]) elif data['DGBM8status%02d' % i] == 'n.i.O.': self.log (5, 'PD30 DGBM8_%02d still n.i.O.' % (i)) io = 0 elif data['DGBM8status%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD30 DGBM8_%02d still n.Bearbeitet ' % (i)) io = 0 for i in range (1, 3): if data['NietM8status%02d' % i] == dbdata['NietM8status%02d' % i]: self.log (5, 'PD30 NietM8status%02d nothing changed in DB (old %s)' % (i, dbdata['NietM8status%02d' % i])) elif data['NietM8status%02d' % i] == 'i.O. NA': self.log (5, 'PD30 NietM8_%02d reworked updating part data F:%d S:%d' % (i, data['NietM8F%02d' % i], data['NietM8S%02d' % i])) self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM8status%02d' % i, data['NietM8status%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM8F%02d' % i, data['NietM8F%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM8S%02d' % i, data['NietM8S%02d' % i]) elif data['NietM8status%02d' % i] == 'n.i.O.': self.log (5, 'PD30 NietM8_%02d still n.i.O.' % (i)) io = 0 elif data['NietM8status%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD30 NietM8_%02d still n.Bearbeitet' % (i)) io = 0 for i in range (1, 6): if data['NietM6status%02d' % i] == dbdata['NietM6status%02d' % i]: self.log (5, 'PD30 NietM6status%02d nothing changed in DB (old %s)' % (i, dbdata['NietM6status%02d' % i])) elif data['NietM6status%02d' % i] == 'i.O. NA': self.log (5, 'PD30 NietM6_%02d reworked updating part data F:%d S:%d' % (i, data['NietM6F%02d' % i], data['NietM6S%02d' % i])) self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM6status%02d' % i, data['NietM6status%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM6F%02d' % i, data['NietM6F%02d' % i]) self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM6S%02d' % i, data['NietM6S%02d' % i]) elif data['NietM6status%02d' % i] == 'n.i.O.': self.log (5, 'PD30 NietM6_%02d still n.i.O ' % (i)) io = 0 elif data['NietM6status%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD30 NietM6_%02d still n.Bearbeitet' % (i)) io = 0 if io: self.updatebde (data['dmc'], 'blindniet', 'i.O. NA') else: _gesio = 0 #'Bajonettclip' if _states ['bajonettclip'] == 'n.Durchlaufen': self.log (5, 'PD30 Bajonett %s nDurchlaufen create Bajonettdata' % ['dmc']) bjkeys = ['dmc', 'startts', 'endts', 'ladungstraeger', 'bajostatus01', 'bajostatus02', 'bajostatus03', 'bajostatus04'] _bjdata = {} _bjstatus = 'i.O. NA' for k in bjkeys: _bjdata [k] = data [k] if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 %s still NiO so complete state is NiO' % k) _bjstatus = 'n.i.O.' _gesio = 0 _bjdata ['aufnahme'] = '0' _bjdata ['bauteilstatus'] = _bjstatus self.addbajonettclip (_bjdata, store = 0) self.updatebde (data['dmc'], 'bajonettclip', _bjstatus) elif _states ['bajonettclip'] in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 Bajonett %s i.O. do nothing' % data['dmc']) else: io = 1 dbdata = self.getbajonettclipdict (data['dmc']) for i in range (1, 5): if data['bajostatus%02d' % i] == dbdata['bajostatus%02d' % i]: self.log (5, 'PD30 bajonett%02d nothing changed in DB (old %s)' % (i, dbdata['bajostatus%02d' % i])) elif data['bajostatus%02d' % i] == 'i.O. NA': self.log (5, 'PD30 bajonett%02d reworked updating part data' % (i)) self.updateinformationfixed (data['dmc'], 'bajonettclip', 'bajostatus%02d' % i, data['bajostatus%02d' % i]) elif (data['bajostatus%02d' % i] == 'i.O.') and (dbdata['bajostatus%02d' % i] not in ['i.O.', 'i.O. NA']): self.log (5, 'PD30 bajonett%02d was not i.O updating part data' % (i)) self.updateinformationfixed (data['dmc'], 'bajonettclip', 'bajostatus%02d' % i, data['bajostatus%02d' % i]) elif data['bajostatus%02d' % i] == 'n.i.O.': self.log (5, 'PD30 bajonett%02d still n.i.O.' % (i)) io = 0 elif data['bajostatus%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD30 bajonett%02d still n.Bearbeitet' % (i)) io = 0 if io: self.updatebde (data['dmc'], 'bajonettclip', 'i.O. NA') else: _gesio = 0 #'CClip' if _states ['cclip'] == 'n.Durchlaufen': self.log (5, 'PD30 CClip %s nDurchlaufen create C-Clipdata' % data['dmc']) cckeys = ['dmc', 'startts', 'endts', 'ladungstraeger', 'clipstatus01', 'clipstatus02', 'clipstatus03', 'clipstatus04', 'clipstatus05', 'clipstatus06', 'clipstatus07', 'clipstatus08', 'clipstatus09', 'clipstatus10', 'clipstatus11', 'clipstatus12', 'clipstatus13', 'clipstatus14', 'clipstatus15', 'clipstatus16', 'clipstatus17', 'clipstatus18'] _ccdata = {} _ccstatus = 'i.O. NA' for k in cckeys: _ccdata [k] = data [k] if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 %s still NiO so complete state is NiO' % k) _ccstatus = 'n.i.O.' _gesio = 0 _ccdata ['aufnahme'] = '0' _ccdata ['bauteilstatus'] = _ccstatus self.updatebde (data['dmc'], 'cclip', _ccstatus) self.addcclip (_ccdata, store = 0) elif _states ['cclip'] in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 CClip %s i.O. do nothing' % ['dmc']) else: io = 1 dbdata = self.getcclipdict (data['dmc']) for i in range (1, 19): if data['clipstatus%02d' % i] == dbdata['clipstatus%02d' % i]: self.log (5, 'PD30 CClip%02d nothing changed in DB (old %s)' % (i, dbdata['clipstatus%02d' % i])) elif data['clipstatus%02d' % i] == 'i.O. NA': self.log (5, 'PD30 CClip%02d reworked updating part data in DB (old %s)' % (i, dbdata['clipstatus%02d' % i])) self.updateinformationfixed (data['dmc'], 'cclip', 'clipstatus%02d' % i, data['clipstatus%02d' % i]) elif (data['clipstatus%02d' % i] == 'i.O.') and (dbdata['clipstatus%02d' % i] not in ['i.O.', 'i.O. NA']): self.log (5, 'PD30 CClip%02d was not i.O updating part data' % (i)) self.updateinformationfixed (data['dmc'], 'cclip', 'clipstatus%02d' % i, data['clipstatus%02d' % i]) elif data['clipstatus%02d' % i] == 'n.i.O.': self.log (5, 'PD30 clipstatus%02d still n.i.O.' % (i)) io = 0 elif data['clipstatus%02d' % i] == 'n.Bearbeitet': self.log (5, 'PD30 clipstatus%02d still n.Bearbeitet' % (i)) io = 0 if io: self.updatebde (data['dmc'], 'cclip', 'i.O. NA') else: _gesio = 0 #'Maseblech' if _states ['masseblech'] == 'n.Durchlaufen': self.log (5, 'PD30 Masseblech %s nDurchlaufen create masseblechdata' % ['dmc']) mbkeys = ['dmc', 'startts', 'endts', 'ladungstraeger', 'startts', 'endts', 'ausgleichselement', 'schallisolierung', 'masseblech', 'blindniet', 'kombimutter', 'fniet', 'sniet', 'mmutter', 'dmutter', 'wmutter', 'tmutter'] _mbdata = {} _mbstatus = 'i.O. NA' for k in mbkeys: _mbdata [k] = data [k] if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 %s still NiO so complete state is NiO' % k) _mbstatus = 'n.i.O.' _gesio = 0 _mbdata ['aufnahme'] = '0' _mbdata ['bauteilstatus'] = _mbstatus self.addmasseblech (_mbdata, store = 0) self.updatebde (data['dmc'], 'masseblech', _mbstatus) elif _states ['masseblech'] in ['i.O.', 'i.O. NA']: self.log (5, 'PD30 Masseblech %s i.O. do nothing' % data['dmc']) else: io = 1 if data['kombimutter'] == 'i.O. NA': self.log (5, 'PD30 Kombimutter reworked updating part data M:%d D:%d W:%d' % (int (data['mmutter']), int (data['dmutter']), int (data['wmutter']))) self.updateinformationfixed (data['dmc'], 'masseblech', 'kombimutter', data['kombimutter']) self.updateinformationfixed (data['dmc'], 'masseblech', 'mmutter', data['mmutter']) self.updateinformationfixed (data['dmc'], 'masseblech', 'dmutter', data['dmutter']) self.updateinformationfixed (data['dmc'], 'masseblech', 'wmutter', data['wmutter']) self.updateinformationfixed (data['dmc'], 'masseblech', 'tmutter', data['tmutter']) elif data['kombimutter'] == 'n.i.O.': self.log (5, 'PD30 Kombimutter still n.i.O.') io = 0 elif data['kombimutter'] == 'n.Bearbeitet': self.log (5, 'PD30 Kombimutter still n.Bearbeitet') io = 0 if data['blindniet'] == 'i.O. NA': self.log (5, 'PD30 Niet reworked updating part data F:%d S:%d' % (int (data['fniet']), int (data['sniet']))) self.updateinformationfixed (data['dmc'], 'masseblech', 'blindniet', data['blindniet']) self.updateinformationfixed (data['dmc'], 'masseblech', 'fniet', data['fniet']) self.updateinformationfixed (data['dmc'], 'masseblech', 'sniet', data['sniet']) elif data['blindniet'] == 'n.i.O.': self.log (5, 'PD30 Blindniet still n.i.O.') io = 0 elif data['blindniet'] == 'n.Bearbeitet': self.log (5, 'PD30 Blindniet still n.Bearbeitet') io = 0 if data['masseblech'] == 'i.O. NA': self.log (5, 'PD30 Masseblech reworked updating part data') self.updateinformationfixed (data['dmc'], 'masseblech', 'masseblech', data['masseblech']) elif data['masseblech'] == 'n.i.O.': self.log (5, 'PD30 Masseblech still n.i.O.') io = 0 elif data['masseblech'] == 'n.Bearbeitet': self.log (5, 'PD30 Masseblech still n.Bearbeitet') io = 0 if data['ausgleichselement'] == 'i.O. NA': self.log (5, 'PD30 Ausgleichselement reworked updating part data') self.updateinformationfixed (data['dmc'], 'masseblech', 'ausgleichselement', data['ausgleichselement']) elif data['ausgleichselement'] == 'n.i.O.': self.log (5, 'PD30 Ausgleichselement still n.i.O.') io = 0 elif data['ausgleichselement'] == 'n.Bearbeitet': self.log (5, 'PD30 Ausgleichselement still n.Bearbeitet') io = 0 if data['schallisolierung'] == 'i.O. NA': self.log (5, 'PD30 Schallisolierung reworked updating part data') self.updateinformationfixed (data['dmc'], 'masseblech', 'schallisolierung', data['schallisolierung']) elif data['schallisolierung'] == 'n.i.O.': self.log (5, 'PD30 Schallisolierung still n.i.O.') io = 0 elif data['schallisolierung'] == 'n.Bearbeitet': self.log (5, 'PD30 Schallisolierung still n.Bearbeitet') io = 0 if io: self.updatebde (data['dmc'], 'masseblech', 'i.O. NA') else: _gesio = 0 if _gesio: self.log (5, 'PD30 All part data i.O. Part is i.O.') if _ges != 'i.O.': self.log (5, 'PD30 part not i.O. yet set i.O.') self.updatebde (data['dmc'], 'gesamtstatus', 'i.O. NA') #nav = NAV (path = "/srv/navision/", db = self) #nav.createcsv (data['dmc']) #try: # shutil.move ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share") #except: # self.errlog ("/srv/navision/share/%s.csv already esist" % data['dmc']) # os.rename ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share/%s.csv" % data['dmc']) #self.updatebde (data['dmc'], 'csv', 'erzeugt') def addpruefzelle2 (self, data): """ Add Processdata 10 - pruefzelle 2 and update BDE data """ if len (self.getpruefzelle2 (data['dmc'])): self.errlog ('PD10 for %s already exists - Overwrite' % data['dmc']) try: cursor = self.executesql ("INSERT OR REPLACE INTO pruefzelle2 (dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(pp01)s', '%(pp02)s', '%(pp03)s', '%(pp04)s', '%(pp05)s', '%(pp06)s', '%(pp07)s', '%(pp08)s', '%(pp09)s', '%(pp10)s', '%(pp11)s', '%(pp12)s', '%(pp13)s', '%(pp14)s', '%(pp15)s', '%(pp16)s', '%(pp17)s', '%(pp18)s', '%(pp19)s', '%(pp20)s', '%(pp21)s', '%(pp22)s', '%(pp23)s', '%(pp24)s', '%(pp25)s', '%(pp26)s', '%(pp27)s', '%(pp28)s', '%(pp29)s', '%(pp30)s', '%(pp31)s', '%(pp32)s', '%(pp33)s', '%(pp34)s', '%(pp35)s', '%(pp36)s', '%(pp37)s', '%(pp38)s', '%(pp39)s', '%(pp40)s', '%(pp41)s');" % data) except: print ("Couldnt insert PD10 pruefzelle2") raise Warning self.updatebde (data['dmc'], 'pruefzelle2', data['bauteilstatus']) self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger']) self.updatebde (data['dmc'], 'endts', data['endts']) l = self.getbde (data['dmc'])[0] #dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus _states = {'pruefzelle1' : l[6], 'putzzelle' : l[7], 'chiron' : l[8], 'blindniet': l[9], 'bajonettclip': l[10], 'cclip': l[11], 'masseblech' : l[12] } if data['bauteilstatus'] == 'i.O.': #Pruefzelle - i.O. self.log (5, 'PD10 .i.O checking part data') if _states['pruefzelle1'] == 'i.O.' and _states['putzzelle'] == 'i.O.' and _states['chiron'] in ('i.O.','n.Durchlaufen') and _states['blindniet'] == 'i.O.' and _states['putzzelle'] == 'i.O.' and _states['bajonettclip'] == 'i.O.' and _states['cclip'] == 'i.O.' and _states['masseblech'] == 'i.O.': self.log (5, 'PD10 .i.O All part data i.O. Part is i.O.') self.updatebde (data['dmc'], 'gesamtstatus', 'i.O.') else: self.log (5, 'PD10 .i.O not All part data i.O. Part is n.i.O.') self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') elif data['bauteilstatus'] == 'n.i.O.': self.log (5, 'PD10 n.i.O updating part data') self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') for i in range (1,42): if data ['pp%02d' % i] == 'n.i.O.': where, field = pruefpunkte ['pp%02d' % i] if _states [where] != 'n.Durchlaufen': self.log (5, 'PD10 pp%02d n.i.O updating part data and State in bde %s' % (i, where)) self.updateinformation (data['dmc'], where, field, 'n.i.O.') self.updatebde (data['dmc'], where, 'n.i.O.') else: self.log (5, 'PD10 pp%02d %s nDurchlaufen do nothing' % (i, where)) nav = NAV (path = "/srv/navision/", db = self) if "Error" in data['dmc']: self.log (5, 'PD10 No Read') elif '' == data['dmc'] : self.log (5, 'PD10 No Read') elif int (data['dmc']) == 0: self.log (5, 'PD10 0 Read') else: nav.createcsv (data['dmc']) try: shutil.move ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share") except: self.errlog ("/srv/navision/share/%s.csv already esist" % data['dmc']) os.rename ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share/%s.csv" % data['dmc']) self.updatebde (data['dmc'], 'csv', 'erzeugt') def updateinformation (self, dmc, where, field, value): """ Updates part information """ # Disablede Updating of BDE state #try: # cursor = self.executesql ("UPDATE bde SET %s = '%s' WHERE dmc = '%s';" % (where, value, dmc)) #except: # self.errlog ("Couldnt update field %s in table %s" % (field, where)) if where == 'chiron': self.log (5, 'Where is Chiron no need to update') return try: cursor = self.executesql ("UPDATE %s SET %s = '%s' WHERE dmc = '%s' AND %s <> 'n.Bearbeitet';" % (where, field, value, dmc, field)) except: self.errlog ("Couldnt update field %s in table %s" % (field, where)) def updateinformationfixed (self, dmc, where, field, value): """ Updates part information even if n.Bearbeitet """ if where == 'chiron': self.log (5, 'Where is Chiron no need to update') return try: cursor = self.executesql ("UPDATE %s SET %s = '%s' WHERE dmc = '%s';" % (where, field, value, dmc)) except: self.errlog ("Couldnt update field %s in table %s" % (field, where)) def getpruefzelle2 (self, dmc): """ Get Processdata 10 - prufezelle2 """ try: cursor = self.executesql ("SELECT dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41 FROM pruefzelle2 WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD10 pruefzelle2") raise Warning return cursor.fetchall () def getpruefzelle2range (self, startts, endts): """ Get Processdata 10 - prufezelle2 """ try: cursor = self.executesql ("SELECT dmc, datetime (startts, 'localtime'), endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41 FROM pruefzelle2 WHERE strftime('%%s', datetime (startts, 'localtime')) BETWEEN strftime('%%s', '%s') AND strftime('%%s', '%s');" % (startts, endts)) except: print ("Couldnt get PD10 pruefzelle2") raise Warning return cursor.fetchall () def deletepruefzelle2 (self, dmc): """ Delete Pruefzelle2 info """ try: cursor = self.executesql ("DELETE FROM pruefzelle2 WHERE dmc = '%s';" % (dmc)) except: print ("Couldnt delete from Pruefzelle2") raise Warning def addpruefzelle3 (self, data): """ Add Processdata 20 - pruefzelle 3 and update BDE data """ if len (self.getpruefzelle3 (data['dmc'])): self.errlog ('PD20 for %s already exists - Overwrite and increment' % data['dmc']) #FixMe try: cursor = self.executesql ("INSERT OR REPLACE INTO pruefzelle3 (dmc, endts, anzahl, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41, pp42) VALUES ('%(dmc)s', '%(endts)s', '1', '%(pp01)s', '%(pp02)s', '%(pp03)s', '%(pp04)s', '%(pp05)s', '%(pp06)s', '%(pp07)s', '%(pp08)s', '%(pp09)s', '%(pp10)s', '%(pp11)s', '%(pp12)s', '%(pp13)s', '%(pp14)s', '%(pp15)s', '%(pp16)s', '%(pp17)s', '%(pp18)s', '%(pp19)s', '%(pp20)s', '%(pp21)s', '%(pp22)s', '%(pp23)s', '%(pp24)s', '%(pp25)s', '%(pp26)s', '%(pp27)s', '%(pp28)s', '%(pp29)s', '%(pp30)s', '%(pp31)s', '%(pp32)s', '%(pp33)s', '%(pp34)s', '%(pp35)s', '%(pp36)s', '%(pp37)s', '%(pp38)s', '%(pp39)s', '%(pp40)s', '%(pp41)s', '%(pp42)s');" % data) except: print ("Couldnt insert PD20 Pruefzelle3") raise Warning self.updatebde (data['dmc'], 'pruefzelle3', data['bauteilstatus']) l = self.getbde (data['dmc'])[0] #dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus _states = {'pruefzelle1' : l[6], 'putzzelle' : l[7], 'chiron' : l[8], 'blindniet': l[9], 'bajonettclip': l[10], 'cclip': l[11], 'masseblech' : l[12] } _ges = l[17] _gesio = 1 iostates = ('i.O.', 'i.O. NA') if data['bauteilstatus'] == 'i.O.': #Pruefzelle - i.O. self.log (5, 'PD20 .i.O checking part data') if _ges == 'i.O.': self.log (5, 'PD20 Part already .i.O do nothing') elif _states['pruefzelle1'] in iostates and _states['putzzelle'] in iostates and _states['chiron'] in ('i.O.','n.Durchlaufen') and _states['blindniet'] in iostates and _states['putzzelle'] in iostates and _states['bajonettclip'] in iostates and _states['cclip'] in iostates and _states['masseblech'] in iostates: self.log (5, 'PD20 .i.O All part data i.O. Part is i.O.') self.updatebde (data['dmc'], 'gesamtstatus', 'i.O.') elif _ges != 'n.i.O.': self.log (5, 'PD20 .i.O All part data i.O. Part is i.O.') self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.') if 0 and data['bauteilstatus'] == 'n.i.O.': #Moner or more Points n.I.O self.log (5, 'PD20 n.i.O updating part data') for i in range (1,42): if data ['pp%02d' % i] == 'n.i.O.': where, field = pruefpunkte ['pp%02d' % i] if _states [where] != 'n.Durchlaufen': self.log (5, 'PD10 pp%02d n.i.O updating part data and State in bde %s' % (i, where)) self.updateinformation (data['dmc'], where, field, 'n.i.O.') self.updatebde (data['dmc'], where, 'n.i.O.') else: self.log (5, 'PD10 pp%02d %s nDurchlaufen do nothing' % (i, where)) def getpruefzelle3 (self, dmc): """ Get Processdata 20 - prufezelle3 """ try: cursor = self.executesql ("SELECT dmc, endts, anzahl, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41, pp42 FROM pruefzelle3 WHERE dmc = '%s';" % dmc) except: print ("Couldnt get PD20 pruefzelle3") raise Warning return cursor.fetchall () def getactuallimits (self): """ Get limits for processvalues """ try: cursor = self.executesql ("SELECT parameter, fromts, valmin, valmax FROM limits WHERE tillts IS NULL ORDER BY fromts DESC;") except: print ("Couldnt get limits") raise Warning ret_val = {} for parameter, fromts, valmin, valmax in cursor.fetchall (): if parameter in ret_val: self.log (1, "Parameter %s has multiple limits") ret_val [parameter] = [valmin, valmax] return ret_val def addlock (self, data): """ Add locked DMC """ try: cursor = self.executesql ("INSERT INTO locked (dmc, rohteilnr, aenderungsidx, sperrts, sperrnr, quelle) VALUES ('%(dmc)s', '%(rohteilnr)s', '%(aenderungsidx)s', '%(sperrts)s', '%(sperrnr)s', '%(quelle)s');" % data) except: print ("Couldnt insert into locked") raise Warning def cleanlock (self, src): """ Delete Locks """ try: cursor = self.executesql ("DELETE FROM locked WHERE dmc <> '4711' AND quelle = '%s';" % src) except: print ("Couldnt clean locked") raise Warning def locksize (self): """ Check nr of locks """ try: cursor = self.executesql ("SELECT COUNT(*) FROM locked WHERE dmc <> '4711';") except: print ("Couldnt clean locked") raise Warning return cursor.fetchone ()[0] def checklock (self, dmc): """ Check if a dmc is locked """ try: cursor = self.executesql ("SELECT dmc, rohteilnr, aenderungsidx, sperrts, sperrnr FROM locked WHERE dmc = '%s';" % dmc) except: print ("Couldnt get locked") raise Warning return cursor.fetchone () if __name__ == "__main__": conn = DB ('/opt/data/bde.sqlite', '/tmp/talog.sql', logtest, errlogtest) print (conn.checklock ('26923900100113758431311')) #data = {'dmc' : '4711', # 'rohteilnr' : '4711', # 'aenderungsidx' : '1', # 'sperrts' : '2017.03.01 14:24:57', # 'sperrnr' : '0'} #conn.addlock (data) print (conn.locksize ()) conn.cleanlock () print (conn.locksize ()) #print (conn.getpruefzelle2range ('2017-03-15 00:00:00', '2017-03-15 12:00:00')) #print (conn.getactuallimits ()) #from PD01_tel import TEL_PD01 #PD01 = TEL_PD01 () #from PD10_tel import TEL_PD10 #PD10 = TEL_PD10 () #from PD05_tel import TEL_PD05 #PD05 = TEL_PD05 () #print (conn.getcclip ('40649372270716929764515')) #print (conn.getchiron ('40649372270716929764515')) #print (conn.getblindniet ('40649372270716929764515')) #conn.addpruefzelle1 (PD01) #print (conn.getblindniet (PD05['dmc'])) #conn.deleteblindniet (PD05['dmc']) #conn.addblindniet (PD05) #conn.deletebajonettclip (PD06['dmc']) #conn.addbajonettclip (PD06) #conn.deletecclip (PD07['dmc']) #conn.addcclip (PD07) #conn.deletemasseblech (PD08['dmc']) #conn.addmasseblech (PD08)