#!/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)) openslides_csv = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL, delimiter=';') openslides_csv.writerow(["Titel", "Vorname", "Nachname", "Gliederungsebene", "Teilnehmernummer", "Gruppen", "Kommentar", "Ist aktiv", "Ist anwesend", "Ist ein Gremium", "Initiales Passwort", "E-Mail", "Benutzername", "Geschlecht", "Stimmgewicht"]) 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" 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 = "Ordentliche Mitglieder" 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 = "Ordentliche Mitglieder" elif membership_type == "FM": groups = "" else: print(f"{firstname} {lastname}: Unknown membership type '{membership_type}'", file=sys.stderr) continue password = generate_password() openslides_csv.writerow(["", firstname, lastname, institution, "", groups, "", 1, 0, 0, password, email, username, "" ""])