First Commit
This commit is contained in:
174
html/sternwarte/intern/anmeld/remove4weeks/main.py
Normal file
174
html/sternwarte/intern/anmeld/remove4weeks/main.py
Normal file
@@ -0,0 +1,174 @@
|
||||
"""
|
||||
main.py für remove4weeks
|
||||
|
||||
Checked per cron jeden Tag die 'anmeldungen'-Tabelle in der Datenbank.
|
||||
Prüft für jeden Teilnehmer ob
|
||||
- entweder die Führung abgesagt wurde
|
||||
- oder 4 Wochen seit der teilgenommenen Führung vergangen sind.
|
||||
Ist das der Fall, werden die persönlichen Daten des Teilnehmers mit '-' in der
|
||||
Datenbank überschrieben.
|
||||
|
||||
TODO
|
||||
- Statistik-Daten behalten: Anzahl der Anfragen, davon zugesagt, davon abgesagt und
|
||||
ggf. in eine eigenen Tabelle merken
|
||||
|
||||
|
||||
Versions:
|
||||
V 1.3 2022-12-08 rxf
|
||||
- 'abgesagte' werden nicht mehgr gelöscht
|
||||
|
||||
V 1.2 2022-11-03 rxf
|
||||
- 'nicht teilgenomme' werden nicht mehr behandelt
|
||||
- SELECT nun nur noch über fdatum der anmelden-Tabelle
|
||||
|
||||
V 1.1 2020-10-14 rxf
|
||||
- Löschen der reihe nach: erst abgesagt, dann 'nicht teolgenommen' und
|
||||
dann älter als 4 Wochen
|
||||
|
||||
V 1.0 2020-10-10 rxf
|
||||
- erste live gestellte Version
|
||||
|
||||
V 0.0 2020-10-08 rxf
|
||||
- Start
|
||||
"""
|
||||
|
||||
from datetime import datetime, timedelta, date
|
||||
import mysql.connector
|
||||
from mysql.connector import errorcode
|
||||
import os
|
||||
|
||||
# Versionsnummer und Date
|
||||
VERSION="1.3"
|
||||
VDATE="2022-12-08"
|
||||
|
||||
# Wie viele Tage müssen vergangen sein, damit gelöscht wird?
|
||||
# default = 28
|
||||
VTAGE = 28
|
||||
|
||||
# $host = 'localhost';
|
||||
# $user = 'db310927';
|
||||
# $pass = 'ArktUhr';
|
||||
# $dbase = 'db310927';
|
||||
|
||||
|
||||
# Definitionen für die Datenbank
|
||||
unix_socket=" /var/lib/mysql/mysql.sock"
|
||||
host = 'localhost'
|
||||
user = 'db310927'
|
||||
#password = 'ArktUhr'
|
||||
password = 'vetivene-albarco-earner'
|
||||
dbase = 'db310927'
|
||||
|
||||
if os.environ.get('STWANMELD') == '1':
|
||||
host = "localhost"
|
||||
user = "root"
|
||||
password = "SFluorit"
|
||||
dbase = "sternwarte"
|
||||
|
||||
|
||||
def updateentry(db, id):
|
||||
""" Update den Eintrag mit der ID id: es werden alle
|
||||
persönlichen Daten mit '-' überschreiben"""
|
||||
|
||||
mycursor = db.cursor()
|
||||
dash = '"-"'
|
||||
sql = "UPDATE anmeldungen SET " + \
|
||||
"name=" + dash + ", vorname=" + dash + ", email=" + dash + ", telefon=" + dash + ", plz=0, strasse=" + dash + ", stadt=" + dash + \
|
||||
", remarks = '' WHERE id=\"" + str(id) + "\""
|
||||
# logit(sql)
|
||||
mycursor.execute(sql)
|
||||
db.commit()
|
||||
return mycursor.rowcount
|
||||
|
||||
|
||||
|
||||
def removeabgesagte(db):
|
||||
""" Alle abgesagten Teilnehmer finden und deren IDs übergeben """
|
||||
abgesagte = []
|
||||
mycursor = db.cursor()
|
||||
delcount = 0
|
||||
|
||||
sql = "SELECT id FROM anmeldungen WHERE abgesagt=1 AND name != '-'"
|
||||
mycursor.execute(sql)
|
||||
myresult = mycursor.fetchall()
|
||||
logstr = "Abgesagt: "
|
||||
for x in myresult:
|
||||
logstr += str(x[0]) + ','
|
||||
abgesagte.append(x[0])
|
||||
delcount += updateentry(db, x[0])
|
||||
logit(logstr)
|
||||
logit('Anzahl Abgesagte: ' + str(delcount))
|
||||
return delcount
|
||||
|
||||
# def removeNICHTteilgenommene(db):
|
||||
# """ Alle Teilnehmer holen, die bei der gestrigen Führung
|
||||
# zwar angemeldet waren aber nicht teilgenommen haben. """
|
||||
# nichtteilg = []
|
||||
# mycursor = db.cursor()
|
||||
# delcount = 0
|
||||
# sql = "SELECT anmeldungen.id FROM anmeldungen INNER JOIN fdatum ON anmeldungen.fid=fdatum.id WHERE DATE_ADD(DATE(fdatum.datum),INTERVAL 1 DAY)<=DATE(NOW()) AND teilgenommen = 0 AND name != '-'"
|
||||
# mycursor.execute(sql)
|
||||
# myresult = mycursor.fetchall()
|
||||
# logstr = "Nicht teilgenommen: "
|
||||
# for x in myresult:
|
||||
# logstr += str(x[0]) + ','
|
||||
# nichtteilg.append(x[0])
|
||||
# delcount += updateentry(db, x[0])
|
||||
# logit(logstr)
|
||||
# return delcount
|
||||
|
||||
|
||||
def remove4weekold(db):
|
||||
""" Alle Teilnehmer IDs holen, die vor 4 Wochen bei einer Führung waren
|
||||
bzw. für eine Führung angemeldet waren"""
|
||||
mustdelete = []
|
||||
mycursor = db.cursor()
|
||||
delcount = 0
|
||||
|
||||
sql = "SELECT id FROM anmeldungen WHERE DATE_ADD(DATE(fdatum),INTERVAL " + str(VTAGE) + " DAY)<=DATE(NOW()) AND name != '-'"
|
||||
mycursor.execute(sql)
|
||||
myresult = mycursor.fetchall()
|
||||
logstr = "4 Wochen alt: "
|
||||
for x in myresult:
|
||||
logstr += str(x) + ','
|
||||
mustdelete.append(x[0])
|
||||
delcount += updateentry(db, x[0])
|
||||
logit(logstr)
|
||||
logit('Anazhl 4 Wochen alte: : ' + str(delcount))
|
||||
return delcount
|
||||
|
||||
|
||||
def logit(arg):
|
||||
""" Ausgabe der Parameter mit einen Zeitstempel"""
|
||||
now = datetime.now()
|
||||
out = now.strftime("%Y-%m-%d %H:%M:%S") + " - " + arg
|
||||
print(out)
|
||||
|
||||
|
||||
def main():
|
||||
logit('Start - Version ' + VERSION + " vom " + VDATE)
|
||||
try:
|
||||
mydb = mysql.connector.connect(
|
||||
unix_socket=unix_socket,
|
||||
# host=host,
|
||||
user=user,
|
||||
password=password,
|
||||
database=dbase
|
||||
)
|
||||
# acount = removeabgesagte(mydb)
|
||||
# count += removeNICHTteilgenommene(mydb)
|
||||
bcount = remove4weekold(mydb)
|
||||
logit('Geloescht wurden ' + str(bcount) + ' Eintraege.')
|
||||
|
||||
except mysql.connector.Error as err:
|
||||
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
|
||||
print("Something is wrong with your user name or password")
|
||||
elif err.errno == errorcode.ER_BAD_DB_ERROR:
|
||||
print("Database does not exist")
|
||||
else:
|
||||
print(err)
|
||||
logit("End\n");
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user