From 7b076157206c6e9d8053e3cd0ce33f7b4ba05086 Mon Sep 17 00:00:00 2001 From: Georg Klein Date: Wed, 19 Oct 2022 21:13:13 +0000 Subject: [PATCH] =?UTF-8?q?Dateien=20hochladen=20nach=20=E2=80=9E=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tool generates a list suitable for importUsers from a simple comma-separated list of first and last names and some command line parameters Requires an additional file named WordList.txt containing a list of words for default password generation. Three words are picked at random and joined with a dash --- generateUserlist.py | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 generateUserlist.py diff --git a/generateUserlist.py b/generateUserlist.py new file mode 100644 index 0000000..98c5a19 --- /dev/null +++ b/generateUserlist.py @@ -0,0 +1,49 @@ +# 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:]) \ No newline at end of file