# Generate import file import sys, getopt import csv import os,io import fileinput import random def main(argv): wordList = open("WordList.txt").read().splitlines() groups = "Schueler" yoe = "00" domainname="hd.waldorf.one" filename = "names.csv" try: opts, args = getopt.getopt(argv,"hg:d:y:f:",["help","groups=","domain=","year=","file="]) except getopt.GetoptError: print("Usage: importUsers.py -d [-g ] [-y -f ") sys.exit(2) for opt, arg in opts: if opt == '-h': print("Usage: importUsers.py -d [-g ] -y -f ") elif opt in ('-d', '--domain'): domainname = arg elif opt in ('-g', '--groups'): groups = groups + "," + arg elif opt in ('-f', '--file'): filename = arg elif opt in ('-y', '--year'): yoe = arg groups = groups + ",schueler-hd-" + yoe outputFileName = "users_" + yoe + ".csv" char_map = {ord("ä"):"ae", ord("ü"):"ue", ord("ö"):"oe", ord("ß"):"ss", ord(" "):"-"} with open(outputFileName,"w+",newline='') as outputFile: header = ["first_name","last_name","email_address","sis_username","user_groups","password"] writer = csv.DictWriter(outputFile,fieldnames=header,delimiter=";", quoting=csv.QUOTE_MINIMAL) writer.writeheader() users = open(filename,"r").read().splitlines() for user in users: first_name,last_name = tuple(user.split(",")) username = first_name.casefold().translate(char_map) + "." + last_name.casefold().translate(char_map) + "-" + yoe address = username + "@" + domainname password = "-".join(random.sample(wordList,3)) writer.writerow({"first_name":first_name,"last_name":last_name,"email_address":address,"sis_username":username,"user_groups":groups,"password":password}) if __name__ == "__main__": main(sys.argv[1:])