commit
ac7f41801b
@ -0,0 +1,37 @@ |
||||
#!/usr/bin/env python3 |
||||
""" |
||||
This is a script which adds the isClubRep attribute to all LDAP user records |
||||
whose most recent nonMemberTerm is later than their most recent (member) term. |
||||
|
||||
GSSAPI is used for LDAP authentication, so make sure to run `kinit` first. |
||||
Also, make sure to run this script from the top-level of the git directory |
||||
(see the sys.path hack below). |
||||
""" |
||||
import os |
||||
import sys |
||||
|
||||
import ldap3 |
||||
|
||||
sys.path.append(os.getcwd()) |
||||
from ceod.model.utils import should_be_club_rep |
||||
|
||||
# modify as necessary |
||||
LDAP_URI = "ldaps://auth1.csclub.uwaterloo.ca" |
||||
LDAP_MEMBERS_BASE = "ou=People,dc=csclub,dc=uwaterloo,dc=ca" |
||||
|
||||
conn = ldap3.Connection( |
||||
LDAP_URI, authentication=ldap3.SASL, sasl_mechanism=ldap3.KERBEROS, |
||||
auto_bind=True, raise_exceptions=True) |
||||
conn.search(LDAP_MEMBERS_BASE, '(objectClass=member)', |
||||
attributes=['uid', 'isClubRep', 'term', 'nonMemberTerm']) |
||||
total_records_updated = 0 |
||||
for entry in conn.entries: |
||||
if not should_be_club_rep(entry.term.values, entry.nonMemberTerm.values): |
||||
continue |
||||
if entry.isClubRep.value: |
||||
continue |
||||
changes = {'isClubRep': [(ldap3.MODIFY_REPLACE, [True])]} |
||||
conn.modify(entry.entry_dn, changes) |
||||
print('Modified %s' % entry.uid.value) |
||||
total_records_updated += 1 |
||||
print('Total records updated: %d' % total_records_updated) |
Loading…
Reference in new issue