forked from public/pyceo
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import sys, ldap
|
|
from ceo import members, uwldap, terms, ldapi
|
|
|
|
def max_term(term1, term2):
|
|
if terms.compare(term1, term2) > 0:
|
|
return term1
|
|
else:
|
|
return term2
|
|
|
|
class ExpiredAccounts:
|
|
help = '''
|
|
expiredaccounts [--email]
|
|
|
|
Displays a list of expired accounts. If --email is specified, expired account
|
|
owners will be emailed.
|
|
'''
|
|
|
|
def main(self, args):
|
|
send_email = False
|
|
if len(args) == 1 and args[0] == '--email':
|
|
sys.stderr.write("If you want to send an account expiration notice to " \
|
|
"these users then type 'Yes, do this' and hit enter\n")
|
|
if raw_input() == 'Yes, do this':
|
|
send_email = True
|
|
uwl = ldap.initialize(uwldap.uri())
|
|
mlist = members.expired_accounts()
|
|
for member in mlist.values():
|
|
term = "f0000"
|
|
term = reduce(max_term, member.get("term", []), term)
|
|
term = reduce(max_term, member.get("nonMemberTerm", []), term)
|
|
expiredfor = terms.delta(term, terms.current())
|
|
|
|
if expiredfor <= 3:
|
|
uid = member['uid'][0]
|
|
name = member['cn'][0]
|
|
email = None
|
|
print '%s (expired for %d terms)' % (uid.ljust(12), expiredfor)
|
|
if send_email:
|
|
print " sending mail to %s" % uid
|
|
members.send_account_expired_email(name, uid)
|