C.A.T./generateUserlist.py

49 lines
1.8 KiB
Python

# 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 <domainname> [-g <groups>] [-y <year of enrollment]> -f <datafile>")
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print("Usage: importUsers.py -d <domainname> [-g <groups>] -y <year of enrollment> -f <datafile> ")
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:])