#! /usr/bin/env python3 # Python Script zum testen, ob neue Ausschreibungen hinzugekommen sind, oder bereits vorhandene sich geändert haben (kein herunterladen, es wird im Downloadordner wkOrgConfig.downpath gesucht) # Name und Pfad der Datenbank als Variablen import wkOrgConfig import wkOrgAssis import os import os.path import sqlite3 # Init der Datenbankverbindung if os.path.isfile(wkOrgConfig.db['pathname']+wkOrgConfig.db['filename']): dbConn = sqlite3.connect( wkOrgConfig.db['pathname']+wkOrgConfig.db['filename']) dbConn.text_factory = str dbCur = dbConn.cursor() else: print("Keine Datenbank vorhanden!") exit(-1) # Hole Liste der Dateinamen im downloadVerzeichnis filenames = os.listdir(wkOrgConfig.downPath) # print filenames # Für jeden Dateinamen: for filename in filenames: # Finde alle Einträge (id, dateiname, sha256 , wkID) zu diesen Dateinamen in der downloadTabelle -> dlList dbCur.execute( 'SELECT id, dateiname, sha512 , wkID FROM downloads WHERE dateiname=?', (filename, )) ausschr = dbCur.fetchall() # Falls dlList leer: (heißt ausschreibung wurde noch nicht zugeordnet) if ausschr == []: # füge Ausschreibung zur downloadTabelle hinzu (merke dir die ID) ausschrID = wkOrgAssis.dbAddDownload( dbCur, filename, wkOrgAssis.aFilesSHA512(wkOrgConfig.downPath+filename)) dbConn.commit() # füge Wettkämpfe zur wkTabelle hinzu, merke die wkIDs print("Ausschreibung: "+filename) os.system('mupdf "'+wkOrgConfig.downPath + filename + '" >/dev/null 2>/dev/null &') wkIDs = wkOrgAssis.dbAddWks(dbCur, ausschrID) dbConn.commit() # update die wkIDs in der Ausschreibung in der downloadTabelle dbCur.execute('UPDATE downloads SET wkID=? WHERE id=?', (' '.join(str(wkIDs)), ausschrID)) dbConn.commit() # Sonst: else: # (auch wenn mehrere dl mit diesem Dateinamen in der # downloadDatenbank gefunden werden, wir nehmen immer nur den # ersten) # Falls wkID == NULL: if ausschr[0][3] == 'NULL': # füge Wettkämpfe zur wkTabelle hinzu, merke die wkIDs wkIDs = dbAddWks(dbCur, ausschr[0][0]) # update die wkIDs dieser Ausschreibung dbCur.execute('UPDATE downloads SET wkIDs=? WHERE id=?', (' '.join(wkIDs), ausschr[0][0])) dbConn.commit() # Sonst: else: # Falls wkID != 0: if ausschr[0][3] != '0': # Falls sich der Hash geändert hat: if ausschr[0][2] != wkOrgAssis.aFilesSHA512(wkOrgConfig.downPath+filename): # Finde alle wkEinträge, die diese AusschreibungsID haben: dbCur.execute( 'SELECT (wkId) FROM downloads WHERE dateiname=?', (filename,)) wkListList = dbCur.fetchall() # Für jeden diesen Eintrag: for wkList in wkListList: # Berichtige die Wettkampfdaten for wk in wkList: print("Ups: kein dbUpdateWk") # wkOrgAssis.dbUpdateWk(wk) # Aufräumen dbConn.commit() dbConn.close()