#!/usr/bin/env python3 import random import subprocess import string from common import * LDAP_BASE = "cn=users,dc=sawtooth,dc=claremontmakerspace,dc=org" RAND_PW_LEN = 20 def makeSets(props): return sum([["--set", key + "=" + value] for key, value in props.items()], []) def main(): members = getMembershipworksData(['members', 'staff'], "lvl,phn,eml,lbl,nam,end,_id") for member in members: randomPass = ''.join(random.choice(string.ascii_letters + string.digits) for x in range(0, RAND_PW_LEN)) username = member["Account Name"].lower().replace(" ", ".") props = { "title": "", # Title "firstname": member["First Name"], "lastname": member["Last Name"], # (c) "username": username, # (cmr) "description": "", # Description "password": randomPass, # (c) Password #"mailPrimaryAddress": member["Email"], # Primary e-mail address #"displayName": "", # Display name #"birthday": "", # Birthdate #"jpegPhoto": "", # Picture of the user (JPEG format) "employeeNumber": member["Account ID"], #"employeeType": "", # Employee type #"groups": "", # Groups "homedrive": "H:", # Windows home drive "sambahome": "\\\\ucs\\" + username, # Windows home path "profilepath": "%LOGONSERVER%\\%USERNAME%\\windows-profiles\\default", # Windows profile directory "disabled": "1" if member["Account on Hold"] != "" else "0", #"userexpiry": member["Renewal Date"], "pwdChangeNextLogin": "1", # User has to change password on next login #"sambaLogonHours": "", # Permitted times for Windows logins "e-mail": member["Email"], # ([]) E-mail address "phone": member["Phone"], # Telephone number #"PasswordRecoveryMobile": member["Phone"], # Mobile phone number "PasswordRecoveryEmail": member["Email"] } subprocess.call(["udm", "users/user", "create", "--position", LDAP_BASE] + makeSets(props)) # remove props we don't want to reset props.pop("password") props.pop("pwdChangeNextLogin") subprocess.call(["udm", "users/user", "modify", "--dn", "uid=" + username + "," + LDAP_BASE] + makeSets(props)) if __name__ == "__main__": main()