2609ccb20d1f754952b00a82e7c6ff755e5ede45
[mspang/pyceo.git] / ceo / console / expiredaccounts.py
1 import sys, ldap
2 from ceo import members, uwldap
3
4 class ExpiredAccounts:
5   help = '''
6 expiredaccounts [--email]
7
8 Displays a list of expired accounts. If --email is specified, expired account
9 owners will be emailed. The email will go to the email listed in uwdir.
10 '''
11
12   def main(self, args):
13     send_email = False
14     if len(args) == 1 and args[0] == '--email':
15       sys.stderr.write("If you want to send an account expiration notice to " \
16         "these users then type 'Yes, do this' and hit enter\n")
17       if raw_input() == 'Yes, do this':
18         send_email = True
19     uwl = ldap.initialize(uwldap.uri())
20     mlist = members.expired_accounts()
21     for member in mlist.values():
22       uid = member['uid'][0]
23       name = member['cn'][0]
24       email = None
25       if send_email:
26         members.send_account_expired_email(name, uid)
27         user = uwl.search_s(uwldap.base(), ldap.SCOPE_SUBTREE,
28           '(uid=%s)' % ldapi.escape(uid))
29         if len(user) > 0  and 'mailLocalAddress' in user[0][1]:
30           email = user[0][1]['mailLocalAddress'][0]
31           members.send_account_expired_email(name, email)
32       print '%s %s' % (uid.ljust(12), name.ljust(30))