Also make it only send to accounts expired within the last 3 terms (a year).
-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:
help = '''
class ExpiredAccounts:
help = '''
uwl = ldap.initialize(uwldap.uri())
mlist = members.expired_accounts()
for member in mlist.values():
uwl = ldap.initialize(uwldap.uri())
mlist = members.expired_accounts()
for member in mlist.values():
- uid = member['uid'][0]
- name = member['cn'][0]
- email = None
- if send_email:
- members.send_account_expired_email(name, uid)
+ 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)
user = uwl.search_s(uwldap.base(), ldap.SCOPE_SUBTREE,
'(uid=%s)' % ldapi.escape(uid))
if len(user) > 0 and 'mailLocalAddress' in user[0][1]:
email = user[0][1]['mailLocalAddress'][0]
user = uwl.search_s(uwldap.base(), ldap.SCOPE_SUBTREE,
'(uid=%s)' % ldapi.escape(uid))
if len(user) > 0 and 'mailLocalAddress' in user[0][1]:
email = user[0][1]['mailLocalAddress'][0]
- members.send_account_expired_email(name, email)
- print '%s %s' % (uid.ljust(12), name.ljust(30))
+ if send_email:
+ print " sending mail to %s" % email
+ members.send_account_expired_email(name, email)
+ else:
+ print " would also mail to %s" % email
+