forked from CMS/memberPlumbing
Adam Goldsmith
cec414ca36
should have split these up, but messed up indentation, and too lazy to fix right now
70 lines
2.4 KiB
Python
Executable File
70 lines
2.4 KiB
Python
Executable File
#!/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("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()
|