start work on allowing "packages"
This commit is contained in:
10
fsmi_fsr/helpers/compile_presentation.sh
Executable file
10
fsmi_fsr/helpers/compile_presentation.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
dest_file="presentation_$(date +%Y-%m-%d).tex"
|
||||
|
||||
echo Compiling
|
||||
mkdir -p data/presentation
|
||||
cd data/presentation/
|
||||
|
||||
latexmk -pdf "../$dest_file"
|
||||
ln -srnf "presentation_$(date +%Y-%m-%d).pdf" ../../presentation.pdf
|
||||
17
fsmi_fsr/helpers/get_uvproto.sh
Executable file
17
fsmi_fsr/helpers/get_uvproto.sh
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
: "${FSR_GEN_SSH_TO:=fsmi-login.fsmi.uni-karlsruhe.de}"
|
||||
: "${FSR_GEN_SSH:=$(test "$(hostname -d)" = "fsmi.uni-karlsruhe.de" || echo 1)}"
|
||||
|
||||
QUERY="select '* FSR-Protokoll vom '||datum|| case when protokoll like '%TODO%' then ' (hat noch TODOs)' else '' end from protokolle where ist_veroeffentlicht=false and name is null order by datum asc"
|
||||
|
||||
cmd="psql --no-align --tuples-only service=fsmi -c \"$QUERY\""
|
||||
|
||||
if [ -z "$FSR_GEN_SSH" ] || [ "$FSR_GEN_SSH" -eq 0 ]; then
|
||||
raw_proto="$(sh -c "$cmd")"
|
||||
else
|
||||
raw_proto="$(ssh -- "$FSR_GEN_SSH_TO" "$cmd")"
|
||||
fi
|
||||
|
||||
echo "$raw_proto"
|
||||
6
fsmi_fsr/helpers/list_termine.sh
Executable file
6
fsmi_fsr/helpers/list_termine.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
khal --version > /dev/null
|
||||
|
||||
khal list --day-format "" --format "* {start} {title}" -a calendars_fsmi today 30d | grep -v Fachschaftsrat | grep -v Feriensprechstunde || true
|
||||
|
||||
5
fsmi_fsr/helpers/list_termine_proto.sh
Executable file
5
fsmi_fsr/helpers/list_termine_proto.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh -e
|
||||
khal --version > /dev/null
|
||||
echo "{{'{|'}}"
|
||||
khal list --day-format "" --format "{{{{'{{{{'}}}}Termin|was={title}|wann={start}{{{{'}}}}'}}}}" -a calendars_fsmi today 30d | grep -v Fachschaftsrat | grep -v Feriensprechstunde || true
|
||||
echo "{{'|}'}}"
|
||||
38
fsmi_fsr/helpers/read_db.sh
Executable file
38
fsmi_fsr/helpers/read_db.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
: "${FSR_GEN_SSH_TO:=fsmi-login.fsmi.uni-karlsruhe.de}"
|
||||
: "${FSR_GEN_SSH:=$(test "$(hostname -d)" = "fsmi.uni-karlsruhe.de" || echo 1)}"
|
||||
|
||||
sql() {
|
||||
# $1: select
|
||||
# $2: order_by
|
||||
select="$1"
|
||||
order_by="$2"
|
||||
printf "
|
||||
SELECT %s FROM protokolle
|
||||
WHERE ist_veroeffentlicht=false AND name IS NULL
|
||||
ORDER BY %s
|
||||
" "$select" "$order_by" | tr '\n' ' '
|
||||
}
|
||||
|
||||
cmd="psql --no-align --tuples-only service=fsmi -c"
|
||||
cmd_raw="$cmd '$(sql "datum" "datum ASC")'"
|
||||
cmd_last="$cmd '$(sql "protokoll" "datum DESC LIMIT 1")'"
|
||||
|
||||
if [ -z "$FSR_GEN_SSH" ] || [ "$FSR_GEN_SSH" -eq 0 ]; then
|
||||
raw_proto="$(sh -c "$cmd_raw")"
|
||||
sh -c "$cmd_last" >data/last_proto
|
||||
else
|
||||
raw_proto="$(ssh -- "$FSR_GEN_SSH_TO" "$cmd_raw")"
|
||||
ssh -- "$FSR_GEN_SSH_TO" "$cmd_last" >data/last_proto
|
||||
fi
|
||||
|
||||
for proto in $raw_proto; do
|
||||
echo "* FSR-Protokoll vom $proto"
|
||||
done > data/uvproto.txt
|
||||
echo "$proto" > data/last_date
|
||||
|
||||
grep -ioP '(?<=nächste Redeleitung: ).*(?=</li>)' data/last_proto > data/redeleitung
|
||||
grep -ioP '(?<=nächstes Protokoll: ).*(?=</li>)' data/last_proto > data/protokoll
|
||||
grep -ioP '(?<=Ort: ).*(?=</li>)' data/last_proto > data/ort
|
||||
55
fsmi_fsr/helpers/read_ubmails.py
Executable file
55
fsmi_fsr/helpers/read_ubmails.py
Executable file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/python3
|
||||
import mailbox
|
||||
import jinja2
|
||||
import email.header
|
||||
import email.utils
|
||||
import yaml
|
||||
import datetime
|
||||
import sys, os
|
||||
import pypandoc
|
||||
import argparse
|
||||
import quopri
|
||||
from pprint import pprint
|
||||
from dateutil import parser as dateutilparser
|
||||
|
||||
import generate
|
||||
|
||||
CONFIG_FILE = "generator.conf"
|
||||
|
||||
def decode_header(header):
|
||||
decoded_header = email.header.decode_header(header)[0]
|
||||
encoding = decoded_header[1] or "ascii"
|
||||
if encoding == "unknown-8bit":
|
||||
encoding = "ascii"
|
||||
return decoded_header[0].decode(encoding, errors="replace") if isinstance(decoded_header[0], bytes) else decoded_header[0]
|
||||
|
||||
if __name__ == "__main__":
|
||||
aparser = argparse.ArgumentParser()
|
||||
aparser.add_argument("--config", "-c", default=CONFIG_FILE)
|
||||
args = aparser.parse_args()
|
||||
|
||||
config = generate.get_config(args.config)
|
||||
mbox = mailbox.Maildir(config["ubmails_inbox_maildir"])
|
||||
|
||||
latest = None
|
||||
latest_date = None
|
||||
|
||||
for message in mbox:
|
||||
if message["Subject"]:
|
||||
if decode_header(message["Subject"]).strip() == "Unbeantwortete Mails":
|
||||
date = dateutilparser.parse(message["Date"])
|
||||
if latest is None:
|
||||
latest = message
|
||||
latest_date = date
|
||||
elif latest_date < date:
|
||||
latest = message
|
||||
latest_date = date
|
||||
|
||||
if not latest:
|
||||
print("ERROR: No Mail found", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
if latest_date.date() != datetime.date.today():
|
||||
print("WARNING: Mail is not from today", file=sys.stderr)
|
||||
payload = latest.get_payload(decode=True).decode("utf8").strip()
|
||||
result = (payload.rpartition("\n--")[0].strip() if "\n--" in payload else payload)
|
||||
print(result)
|
||||
Reference in New Issue
Block a user