assume alumni if UWLDAP is missing data
continuous-integration/drone/pr Build is passing
Details
continuous-integration/drone/pr Build is passing
Details
This commit is contained in:
parent
6a1fa81b82
commit
950e794bb7
|
@ -316,12 +316,12 @@ class LDAPService:
|
||||||
self,
|
self,
|
||||||
dry_run: bool = False,
|
dry_run: bool = False,
|
||||||
members: Union[List[str], None] = None,
|
members: Union[List[str], None] = None,
|
||||||
uwldap_batch_size: int = 10,
|
uwldap_batch_size: int = 100,
|
||||||
):
|
):
|
||||||
if members:
|
if members:
|
||||||
filter = '(|' + ''.join([f'(uid={uid})' for uid in members]) + ')'
|
filter = '(|' + ''.join([f'(uid={uid})' for uid in members]) + ')'
|
||||||
else:
|
else:
|
||||||
filter = '(objectClass=*)'
|
filter = '(objectClass=member)'
|
||||||
conn = self._get_ldap_conn()
|
conn = self._get_ldap_conn()
|
||||||
conn.search(
|
conn.search(
|
||||||
self.ldap_users_base, filter, attributes=['uid', 'program'])
|
self.ldap_users_base, filter, attributes=['uid', 'program'])
|
||||||
|
@ -336,12 +336,17 @@ class LDAPService:
|
||||||
batch_uids = uids[i:i + uwldap_batch_size]
|
batch_uids = uids[i:i + uwldap_batch_size]
|
||||||
batch_uw_programs = uwldap_srv.get_programs_for_users(batch_uids)
|
batch_uw_programs = uwldap_srv.get_programs_for_users(batch_uids)
|
||||||
uw_programs.extend(batch_uw_programs)
|
uw_programs.extend(batch_uw_programs)
|
||||||
|
# uw_programs[i] will be None if the 'ou' attribute was not
|
||||||
|
# present in UWLDAP, or if no UWLDAP entry was found at all
|
||||||
|
for i, uw_program in enumerate(uw_programs):
|
||||||
|
if uw_program in (None, 'expired', 'orphaned'):
|
||||||
|
# If the UWLDAP record is orphaned, nonexistent, or missing
|
||||||
|
# data, assume that the member graduated
|
||||||
|
uw_programs[i] = 'Alumni'
|
||||||
users_to_change = [
|
users_to_change = [
|
||||||
(uids[i], csc_programs[i], uw_programs[i])
|
(uids[i], csc_programs[i], uw_programs[i])
|
||||||
for i in range(len(uids))
|
for i in range(len(uids))
|
||||||
if csc_programs[i] != uw_programs[i] and (
|
if csc_programs[i] != uw_programs[i]
|
||||||
uw_programs[i] not in (None, 'expired', 'orphaned')
|
|
||||||
)
|
|
||||||
]
|
]
|
||||||
if dry_run:
|
if dry_run:
|
||||||
return users_to_change
|
return users_to_change
|
||||||
|
|
|
@ -298,6 +298,17 @@ def uwldap_srv(cfg, ldap_conn):
|
||||||
delete_subtree(conn, base_dn)
|
delete_subtree(conn, base_dn)
|
||||||
|
|
||||||
conn.add(base_dn, 'organizationalUnit')
|
conn.add(base_dn, 'organizationalUnit')
|
||||||
|
conn.add(
|
||||||
|
f'uid=ctdalek,{base_dn}',
|
||||||
|
['inetLocalMailRecipient', 'inetOrgPerson', 'organizationalPerson', 'person'],
|
||||||
|
{
|
||||||
|
'mailLocalAddress': 'ctdalek@uwaterloo.internal',
|
||||||
|
'ou': 'Math',
|
||||||
|
'cn': 'Calum T. Dalek',
|
||||||
|
'sn': 'Dalek',
|
||||||
|
'givenName': 'Calum',
|
||||||
|
},
|
||||||
|
)
|
||||||
_uwldap_srv = UWLDAPService()
|
_uwldap_srv = UWLDAPService()
|
||||||
component.getGlobalSiteManager().registerUtility(_uwldap_srv, IUWLDAPService)
|
component.getGlobalSiteManager().registerUtility(_uwldap_srv, IUWLDAPService)
|
||||||
yield _uwldap_srv
|
yield _uwldap_srv
|
||||||
|
|
Loading…
Reference in New Issue