Newer
Older
#!/usr/bin/python3
import argparse
import csv
import random
import string
import sys
ap = argparse.ArgumentParser()
ap.add_argument("--institution", action="store_true")
ap.add_argument("members_csv", type=argparse.FileType("r"))
args = ap.parse_args()
def generate_password():
return ''.join(random.choice(string.ascii_letters + string.digits) for i in range(0, 12))
if not args.institution:
# "ID";"Anrede";"Institution";"Straße";"Nr";"PLZ";"Ort";"Anrede_Ansprechpartner";"Name";"Vorname";"Mailadresse";"PGP";"Mobil";"Telefon";"Fax";"Eintrittsdatum";"Art";"Beitrag";"Sepa";"IBAN";"BIC"
FIRST_NAME_COL = 3
LAST_NAME_COL = 2
LEAVE_DATE_COL = 14
MEMBER_TYPE_COL = 15
EMAIL_COL = 8
else:
# "ID";"Anrede";"Name";"Vorname";"Straße";"Nr";"PLZ";"Ort";"Mailadresse";"PGP";"Mobil";"Telefon";"Geb.Datum";"Eintrittsdatum";"Austrittsdatum";"Art";"Beitrag";"Sepa";"IBAN";"BIC"
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
FIRST_NAME_COL = 9
LAST_NAME_COL = 8
MEMBER_TYPE_COL = 16
EMAIL_COL = 10
INSTITUTION_COL = 2
member_reader = csv.reader(args.members_csv, delimiter=';')
for member in member_reader:
# Titel,Vorname,Nachname,Gliederungsebene,Teilnehmernummer,Gruppen,Kommentar,Ist aktiv,Ist anwesend,Ist ein Gremium,Initiales Passwort,E-Mail,Benutzername,Geschlecht,Stimmgewicht
firstname = member[FIRST_NAME_COL]
lastname = member[LAST_NAME_COL]
membership_type = member[MEMBER_TYPE_COL]
username = email = member[EMAIL_COL]
institution = ""
if not args.institution:
leave_date = member[LEAVE_DATE_COL]
if leave_date.strip() != "":
print(f"{firstname} {lastname}: Already left, ignoring!", file=sys.stderr)
continue
if membership_type == "OV" or membership_type == "OE":
groups = "Delegates"
elif membership_type == "FM":
groups = ""
else:
print(f"{firstname} {lastname}: Unknown membership type '{membership_type}'", file=sys.stderr)
continue
else:
institution = member[INSTITUTION_COL]
if membership_type == "OM":
groups = "Delegates"
elif membership_type == "FM":
groups = ""
else:
print(f"{firstname} {lastname}: Unknown membership type '{membership_type}'", file=sys.stderr)
continue
password = generate_password()
openslides_csv = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL, delimiter=';')
openslides_csv.writerow(["", firstname, lastname, institution, "", groups, "", 1, 0, 0, password, email, username, "" ""])