ucsAccounts: Add groups for certifications, door access, membership level, and volunteer type

This commit is contained in:
Adam Goldsmith 2018-08-14 14:51:48 -04:00
parent deddf1605a
commit 852e8a51e8

View File

@ -1,20 +1,40 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import random import random
import re
import subprocess import subprocess
import string import string
from common import * from common import *
LDAP_BASE = "cn=users,dc=sawtooth,dc=claremontmakerspace,dc=org" LDAP_BASE = "cn=users,dc=sawtooth,dc=claremontmakerspace,dc=org"
GROUP_BASE = "cn=groups,dc=sawtooth,dc=claremontmakerspace,dc=org"
GROUPS_REGEX = "|".join(['Certified: .*', 'Access .*\?', 'CMS .*', 'Volunteer: .*'])
RAND_PW_LEN = 20 RAND_PW_LEN = 20
def makeGroups(members):
groups = [key.replace(':', '.').replace('?', '')
for key in members[0].keys()
if re.match(GROUPS_REGEX, key) is not None]
for group in groups:
subprocess.call(["udm", "groups/group", "create",
"--position", GROUP_BASE,
"--set", "name=" + group])
def makeSets(props): def makeSets(props):
return sum([["--set", key + "=" + value] return sum([["--set", key + "=" + value]
for key, value in props.items()], []) for key, value in props.items()], [])
def makeAppendGroups(member):
groups = [key.replace(':', '.').replace('?', '')
for key, value in member.items()
if re.match(GROUPS_REGEX, key) is not None and value != '']
return sum([["--append", "groups=cn=" + group + ',' + GROUP_BASE]
for group in groups], [])
def main(): def main():
members = getMembershipworksData(['members', 'staff'], members = getMembershipworksData(['members', 'staff'],
"lvl,phn,eml,lbl,nam,end,_id") "lvl,phn,eml,lbl,nam,end,_id")
makeGroups(members)
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)
@ -36,8 +56,6 @@ def main():
"employeeNumber": member["Account ID"], "employeeNumber": member["Account ID"],
#"employeeType": "", # Employee type #"employeeType": "", # Employee type
#"groups": "", # Groups
"homedrive": "H:", # Windows home drive "homedrive": "H:", # Windows home drive
"sambahome": "\\\\ucs\\" + username, # Windows home path "sambahome": "\\\\ucs\\" + username, # Windows home path
"profilepath": "%LOGONSERVER%\\%USERNAME%\\windows-profiles\\default", # Windows profile directory "profilepath": "%LOGONSERVER%\\%USERNAME%\\windows-profiles\\default", # Windows profile directory
@ -64,7 +82,8 @@ def main():
subprocess.call(["udm", "users/user", "modify", subprocess.call(["udm", "users/user", "modify",
"--dn", "uid=" + username + "," + LDAP_BASE] "--dn", "uid=" + username + "," + LDAP_BASE]
+ makeSets(props)) + makeSets(props)
+ makeAppendGroups(member))
if __name__ == "__main__": if __name__ == "__main__":
main() main()