Skip to content
Snippets Groups Projects
openslides-generate-members.py 2.51 KiB
Newer Older
  • Learn to ignore specific revisions
  • Nico's avatar
    Nico committed
    #!/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"
    
    Nico's avatar
    Nico committed
        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"
    
    Nico's avatar
    Nico committed
        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, "" ""])