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
This commit is contained in:
Adam Goldsmith 2018-07-20 11:45:45 -04:00
parent 4b5040599c
commit cec414ca36

31
ucsAccounts.py Normal file → Executable file
View File

@ -8,17 +8,23 @@ from common import *
LDAP_BASE = "cn=users,dc=sawtooth,dc=claremontmakerspace,dc=org" LDAP_BASE = "cn=users,dc=sawtooth,dc=claremontmakerspace,dc=org"
RAND_PW_LEN = 20 RAND_PW_LEN = 20
def makeSets(props):
return sum([["--set", key + "=" + value]
for key, value in props.items()], [])
def main(): def main():
members = getMembershipworksData("lvl,phn,eml,lbl,nam,end,_id") members = getMembershipworksData("lvl,phn,eml,lbl,nam,end,_id")
for member in members: for member in members:
randomPass = ''.join(random.choice(string.ascii_letters + string.digits) randomPass = ''.join(random.choice(string.ascii_letters + string.digits)
for x in range(0, RAND_PW_LEN)) for x in range(0, RAND_PW_LEN))
username = member["Account Name"].lower().replace(" ", ".")
props = { props = {
"title": "", # Title "title": "", # Title
"firstname": member["First Name"], "firstname": member["First Name"],
"lastname": member["Last Name"], # (c) "lastname": member["Last Name"], # (c)
"username": member["Account Name"].lower().replace(" ", "."), # (cmr) "username": username, # (cmr)
"description": "", # Description "description": "", # Description
"password": randomPass, # (c) Password "password": randomPass, # (c) Password
#"mailPrimaryAddress": member["Email"], # Primary e-mail address #"mailPrimaryAddress": member["Email"], # Primary e-mail address
@ -31,6 +37,10 @@ def main():
#"groups": "", # Groups #"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", "disabled": "1" if member["Account on Hold"] != "" else "0",
#"userexpiry": member["Renewal Date"], #"userexpiry": member["Renewal Date"],
@ -44,19 +54,16 @@ def main():
"PasswordRecoveryEmail": member["Email"] "PasswordRecoveryEmail": member["Email"]
} }
propSets = sum([["--set", key + "=" + value] subprocess.call(["udm", "users/user", "create",
for key, value in props.items()], []) "--position", LDAP_BASE] + makeSets(props))
# remove props we don't want to reset
props.pop("password")
props.pop("pwdChangeNextLogin")
cmd = ["udm", "users/user", "create", subprocess.call(["udm", "users/user", "modify",
"--position", LDAP_BASE] + propSets "--dn", "uid=" + username + "," + LDAP_BASE]
+ makeSets(props))
subprocess.call(cmd)
# props = {
# 'Name': ,
# 'Renewal Date': member['Renewal Date'],
# 'Account on Hold': "Yes" if member['Account on Hold'] != '' else "No" }
if __name__ == "__main__": if __name__ == "__main__":
main() main()