From 994c8151798dbb49e7b7226ee0419593b21e5ae0 Mon Sep 17 00:00:00 2001 From: specki <speckij@posteo.net> Date: Tue, 31 Jan 2023 23:01:12 +0100 Subject: [PATCH] Implement basic extraction of plenum topics from dokuwiki --- webserver/docker_dokuwiki/tasks/main.yml | 2 +- .../templates/sendmail_plenum.py | 72 ++++++++++++++++--- 2 files changed, 62 insertions(+), 12 deletions(-) diff --git a/webserver/docker_dokuwiki/tasks/main.yml b/webserver/docker_dokuwiki/tasks/main.yml index 782a5988..698b075e 100644 --- a/webserver/docker_dokuwiki/tasks/main.yml +++ b/webserver/docker_dokuwiki/tasks/main.yml @@ -34,4 +34,4 @@ hour: "20" minute: "0" job: "/usr/bin/python3 /srv/dokuwiki/sendmail_plenum.py" - disabled: true + disabled: false diff --git a/webserver/docker_dokuwiki/templates/sendmail_plenum.py b/webserver/docker_dokuwiki/templates/sendmail_plenum.py index 4663f606..9d6a752e 100644 --- a/webserver/docker_dokuwiki/templates/sendmail_plenum.py +++ b/webserver/docker_dokuwiki/templates/sendmail_plenum.py @@ -1,19 +1,69 @@ import smtplib +import datetime from email.message import EmailMessage -msg = EmailMessage() -msg['Subject'] = 'Aktuelle Plenumsthemen für den kommenden Dienstag 20:00' -msg['From'] = '{{noreply_email_user}}' -msg['To'] = 'intern@warpzone.ms' - with open("/srv/dokuwiki/data/data/pages/intern/diskussionsthemen.txt") as fp: - msg.set_content(fp.read()) + raw = fp.read().split('\n') + + # Extract Themen + firstline = 0 + lastline = 0 + for index, line in enumerate(raw): + # Start marker + if "====== 1." in line: + firstline = index + 1 + continue + + # End marker + if "====== 2." in line: + lastline = index + break + + # Remove empty lines from topics + topics = [] + for extracted in raw[firstline:lastline-1]: + if extracted != '': + topics.append(extracted) + + # There are no topics - just exit + if (len(topics) == 0): + exit() + + # calculate date of next tuesday + d = datetime.date.today() + while d.strftime('%a') != 'Tue': + d += datetime.timedelta(1) + + # mail template + mail = f""" +Liebe Zonies, + +es gibt wieder Themen die im Plenum besprochen werden sollen. Der nächste +Reguläre Termin ist am nächsten Dienstag ({str(d)}). +Im Wiki (https://wiki.warpzone.ms/intern:diskussionsthemen#diskussionsthemen_naechstes_plenum_automatische_einladung) +stehen folgende Themen: + +{chr(10).join(topics)} + +Die Teilnahme ist natürlich auch remote möglich unter +https://jitsi.dorf-post.de/warpzone-plenum möglich. + +Viele Grüße und bis Dienstag, + +sendmail_plenum.py +""" -server = smtplib.SMTP('{{smtp_host}}', {{smtp_port}}) -server.starttls() -server.login("{{noreply_email_user}}", "{{noreply_email_pass}}") -server.send_message(msg) -server.quit() + msg = EmailMessage() + msg['Subject'] = 'Aktuelle Plenumsthemen für den kommenden Dienstag 20:00' + msg['From'] = '{{noreply_email_user}}' + msg['To'] = 'intern@warpzone.ms' + msg.set_content(mail) + + server = smtplib.SMTP('{{smtp_host}}', {{smtp_port}}) + server.starttls() + server.login("{{noreply_email_user}}", "{{noreply_email_pass}}") + server.send_message(msg) + server.quit() -- GitLab