"""
MoinMoin - AttentionPages macro
Copyright (c) 2000 by Richard Jones <richard@bizarsoftware.com.au> Copyright (c) 2000 by Jürgen Hermann <jh@web.de> All rights reserved, see COPYING for details. This macro lists all pages which have an attention symbol in them along with
their last-modified date. Attention symbols are and /!\. Usage:
AttentionPages $Id$
"""
1 import string, re, time, os
2 from MoinMoin.Page import Page
3 from MoinMoin import user, config, wikiutil
4
5 def execute(macro, text, alert_re=re.compile(r'(<!>|/!\\)')):
6 pages = wikiutil.getPageList(config.text_dir)
7 l = []
8 for page in pages:
9 if len(page)>3 and string.lower(page[:4]) == 'help':
10 continue
11 page = Page(page)
12 if alert_re.search(page.get_raw_body()):
13 l.append((os.path.getmtime(page._text_filename()), page))
14 l.sort()
15 l.reverse()
16 ret = ["<table border><tr><th>Page Name</th><th>Last Modified</th></tr>"]
17 tnow = time.time()
18 for mod, page in l:
19 tdiff = int(tnow - float(mod)) / 60
20 if tdiff < 1440:
21 mod = "%dh %dm ago"%(tdiff/60, tdiff%60)
22 elif tdiff < 43200:
23 mod = "%dd %dh ago"%(tdiff/1440, (tdiff/60)%24)
24 else:
25 time_tuple = user.current.getTime(mod)
26 mod = time.strftime("%D %M %Y", time_tuple)
27 ret.append('<tr><td><a href="%s">%s</a></td><td>%s</td></tr>'%(
28 page.page_name, page.split_title(), mod))
29 ret.append("</table>")
30 return string.join(ret, "\n")