Files
cwsvJudo/wkOrg/checkDownloads.py

83 lines
3.2 KiB
Python
Executable File

#! /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()