A better tool for generating envelopes from our database. It directly communicates with the db.cevi.ch which is using hitobito. Download exe Download linux version
It can also be used to find broken address entries in the database
Dies ist ein Commandline-Tool:
cv.exe setup -t "MyS3rviceToken"
vim config.yaml # add endpoints, as outlined in the section "Setup"
cv.exe run
Das resultierende output_versand.pdf
mit Adobe Reader oder Google Chrome öffnen. Andere PDF-reader zeigen oft den Text nicht an.
Every subcommand features the -h
flag for usage help. E.g. cv.exe -h
or cv.exe setup -h
.
cevi-versand
bietet zwei Authentifikationsmöglichkeiten:
cv.exe setup -e levanzo@cevi.ch -p meinP4sswort
holt ein user-token von der Datenbank und speichert dieses inconfig.yaml
. So ist das Passwort nicht gespeichert. Wer möchte, kannconfig.yaml
auch selber einrichten, braucht dafür aber natürlich das user-token von der Datenbank. Dieses user-token gibt dem Programm alle Rechte, die der Nutzer auch hat. Deshalb wird diese Authentifikationsart vermutlich mittelfristig von der cevi-db nicht mehr unterstützt.cv.exe setup -t meinS3rviceToken
erlaubt feineres Management der Rechte, und falls dieses token in die falschen Hände gelangt, ist es einfach, es wieder zu deaktivieren. Um ein service-token einzurichten, siehe den Tab "API-Keys" auf der relevanten Ebene. Der link sieht ungefähr wiehttps://db.cevi.ch/groups/115/service_tokens
aus, nur muss115
ersetzt werden durch die korrekte Ebenen-ID. Das service-token benötigt nur die Rechte "Personen von Untergruppen Lesen".cv.exe setup -t meinS3rviceToken -e levanzo@cevi.ch -p meinP4sswort
um beide Versionen inconfig.yaml
zu hinterlegen.
Die Personen werden von den Datenbank-Endpoints geholt, die von dir in config.yaml
spezifiziert werden. Dies muss manuell gemacht werden.
Folgende placeholder werden in den Endpoint links automatisch eingesetzt:
{api_token}
: Das user-token{login_email}
: Die e-mail adresse{service_token}
: Das service-token
Wenn du etwas davon nicht spezifizieren möchtest, setze es auf ""
.
Beispiel:
#config.yaml
db_conf:
# --- SECURE LOGIN ---
# Das service-token muss manuell eingerichtet werden, z.B. unter db.cevi.ch/groups/115/service_tokens
# ( Ersetze die Zahl 115 durch die entsprechende Gruppe, der alle endpoint Gruppen untergeordnet sind )
# Dieses service-token benötigt die Permissions "Personen von Untergruppen"
# Falls das service_token gesetzt ist, kann in den ENDPOINTS service_token als placeholder verwendet werden.
service_token: "asdfasdfasdfasdfa"
# --- USERTOKEN LOGIN ---
# Das user-token kann automatisch geholt werden. Das ist der einzige Vorteil davon. Dafür ist es weniger
# sicher, weil es für den ganzen Nutzer das selbe ist, egal für welche Anwendung.
# Das user-token wird hier auch api-token genannt.
api_token: "asdfasdfasdfasdf"
# die e-mail adresse zum einloggen in der db.cevi.ch
login_email: "asdf@asdf.ch"
#
# --- ENDPOINTS ---
# Der link zu den Leuten in der datenbank. Relevant für dich als user sind nur die Zahlen für die gruppen,
# sowie die filter_id
# Ersetze sie durch die gruppen-id und filter-id, die du verwenden möchtest.
# Bei login-type SECURE sind die links generell von der Form
# https://db.cevi.ch/groups/2423/people.json?token=[service_token]
# nur mit geschweiften Klammern {} statt eckigen Klammern [].
# Bei login-type USERTOKEN sind die links generell von der Form
# https://db.cevi.ch/groups/2423/people.json?user_email=[login_email]&user_token=[api_token]
# nur mit geschweiften Klammern {} statt eckigen Klammern [].
versand_endpoint_fmtstrs:
- "https://db.cevi.ch/groups/2423/people.json?token={service_token}"
- "https://db.cevi.ch/groups/116/people.json?filter_id=319&user_email={login_email}&user_token={api_token}"
Wenn einige der generierten Couverts nicht so aussehen wie gewollt, ist es möglich die vom Programm generierten Dateien zu ändern:
- In
mapping.yaml
können alledisplay_name:
modifiziert werden. Beim nächsten Programmdurchlauf wird dann deroriginal_name
durch den spezifiziertendisplay_name
ersetzt. Die Zahlen und deroriginal_name
sollten unverändert gelassen werden. - In
inject_people.yaml
können Empfänger spezifiziert werden, die nicht in der Datenbank enthalten sind und trotzdem einen Umschlag erhalten sollen.
cv.exe run
ist kurz für cv.exe run -gnsm
und generiert eine output_versand.pdf
Datei. Die erste Seite enthält Informationen, die restlichen Seiten sind C5-Couverts.
Wenn die Datenbank Personen enthält, deren Adressangaben unvollständig sind wird der Kommandozeilenoutput darüber informieren. Diese Personen werden trotzdem berücksichtigt beim generieren der Couverts, werden aber vermutlich Probleme beim per Post versenden verursachen.
Mach ein Backup von deinen Dateien und lass clean
laufen, dann mach nochmal setup
.
cp config.yaml config.yaml.bak
cp inject_people.yaml inject_people.yaml.bak
cp mapping.yaml mapping.yaml.bak
cv.exe clean -ra
cv.exe setup -t servicetoken -e email@mail.ch -p passwort
# und dann die endpoints neu in config.yaml hinzufügen
Wenn das Programm abbricht und den folgenden Error anzeigt, hier ein Paar Tips:
thread 'main' panicked at 'WTF in main! Perhaps the credentials or the endpoint url are invalid?: Error("missing field `people`", line: 1, column: 81)'
- Ist in
config.yaml
ein service-token hinterlegt, oder eine e-mail und ein api-token? - Ist in
config.yaml
mindestens ein Endpoint vorhanden? - Ist
config.yaml
korrekt yaml-formatiert? - Beinhaltet ein endpoint
user_token={service_token}
oderservice_token={service_token}
statt dem korrektentoken={service_token}
? - Beinhaltet ein endpoint mit user-token
token={api_token}
stattuser_token={api_token}
?
Not relevant to the average user.
If you want to clone this repository and build the executable yourself for windows, you might need to install the dependencies for winres.
If you are compiling on ubuntu, you need openssl-dev
and pkg-config
. Both are available in apt-get. On debian, openssl-dev
is called differently.
Note that this repository is currently not licensed to you. The source code belongs to me, but I do hereby grant you explicit permission to use the executables.