83 lines
3.2 KiB
Python
Executable File
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()
|