Fix expiredaccounts
Also make it only send to accounts expired within the last 3 terms (a year).
This commit is contained in:
parent
bc55a2cb58
commit
d02ee89728
|
@ -1,5 +1,11 @@
|
||||||
import sys, ldap
|
import sys, ldap
|
||||||
from ceo import members, uwldap
|
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:
|
class ExpiredAccounts:
|
||||||
help = '''
|
help = '''
|
||||||
|
@ -19,14 +25,26 @@ owners will be emailed. The email will go to the email listed in uwdir.
|
||||||
uwl = ldap.initialize(uwldap.uri())
|
uwl = ldap.initialize(uwldap.uri())
|
||||||
mlist = members.expired_accounts()
|
mlist = members.expired_accounts()
|
||||||
for member in mlist.values():
|
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]
|
uid = member['uid'][0]
|
||||||
name = member['cn'][0]
|
name = member['cn'][0]
|
||||||
email = None
|
email = None
|
||||||
|
print '%s (expired for %d terms)' % (uid.ljust(12), expiredfor)
|
||||||
if send_email:
|
if send_email:
|
||||||
|
print " sending mail to %s" % uid
|
||||||
members.send_account_expired_email(name, uid)
|
members.send_account_expired_email(name, uid)
|
||||||
user = uwl.search_s(uwldap.base(), ldap.SCOPE_SUBTREE,
|
user = uwl.search_s(uwldap.base(), ldap.SCOPE_SUBTREE,
|
||||||
'(uid=%s)' % ldapi.escape(uid))
|
'(uid=%s)' % ldapi.escape(uid))
|
||||||
if len(user) > 0 and 'mailLocalAddress' in user[0][1]:
|
if len(user) > 0 and 'mailLocalAddress' in user[0][1]:
|
||||||
email = user[0][1]['mailLocalAddress'][0]
|
email = user[0][1]['mailLocalAddress'][0]
|
||||||
|
if send_email:
|
||||||
|
print " sending mail to %s" % email
|
||||||
members.send_account_expired_email(name, email)
|
members.send_account_expired_email(name, email)
|
||||||
print '%s %s' % (uid.ljust(12), name.ljust(30))
|
else:
|
||||||
|
print " would also mail to %s" % email
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue