From cec414ca363239903b44a51fb61e558f760dd6e9 Mon Sep 17 00:00:00 2001 From: Adam Goldsmith Date: Fri, 20 Jul 2018 11:45:45 -0400 Subject: [PATCH] Fix indentation, update props, allow for updating existing accounts should have split these up, but messed up indentation, and too lazy to fix right now --- ucsAccounts.py | 71 +++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 32 deletions(-) mode change 100644 => 100755 ucsAccounts.py diff --git a/ucsAccounts.py b/ucsAccounts.py old mode 100644 new mode 100755 index f8a527b..73f85dd --- a/ucsAccounts.py +++ b/ucsAccounts.py @@ -8,55 +8,62 @@ 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("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": member["Account Name"].lower().replace(" ", "."), # (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) + "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 + "employeeNumber": member["Account ID"], + #"employeeType": "", # Employee type - #"groups": "", # Groups + #"groups": "", # Groups - "disabled": "1" if member["Account on Hold"] != "" else "0", - #"userexpiry": member["Renewal Date"], + "homedrive": "H:", # Windows home drive + "sambahome": "\\\\ucs\\" + username, # Windows home path + "profilepath": "%LOGONSERVER%\\%USERNAME%\\windows-profiles\\default", # Windows profile directory - "pwdChangeNextLogin": "1", # User has to change password on next login + "disabled": "1" if member["Account on Hold"] != "" else "0", + #"userexpiry": member["Renewal Date"], - #"sambaLogonHours": "", # Permitted times for Windows logins + "pwdChangeNextLogin": "1", # User has to change password on next login - "e-mail": member["Email"], # ([]) E-mail address - "phone": member["Phone"], # Telephone number - #"PasswordRecoveryMobile": member["Phone"], # Mobile phone number - "PasswordRecoveryEmail": member["Email"] + #"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"] } - propSets = sum([["--set", key + "=" + value] - for key, value in props.items()], []) + 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") - cmd = ["udm", "users/user", "create", - "--position", LDAP_BASE] + propSets - - subprocess.call(cmd) - - # props = { - # 'Name': , - # 'Renewal Date': member['Renewal Date'], - # 'Account on Hold': "Yes" if member['Account on Hold'] != '' else "No" } + subprocess.call(["udm", "users/user", "modify", + "--dn", "uid=" + username + "," + LDAP_BASE] + + makeSets(props)) if __name__ == "__main__": main()