old-website/industry/archives.cgi

43 lines
1017 B
Plaintext
Raw Normal View History

2011-07-22 21:26:08 -04:00
#!/usr/bin/env python
import os
from md5 import md5
os.umask(0027)
ARCHIVE_LIST = 'csc-industry'
ARCHIVE_MBOX = '/var/lib/mailman/archives/private/%s.mbox/%s.mbox' % (ARCHIVE_LIST, ARCHIVE_LIST)
ARCHIVE_PCK = '/tmp/%s-%s.pck' % (ARCHIVE_LIST, md5(os.path.abspath(__file__)).hexdigest())
try:
mbox_mtime = os.stat(ARCHIVE_MBOX).st_mtime
except:
print 'Content-Type: text/plain\r\n\r\nUnable to stat archive.'
exit()
try:
stat = os.stat(ARCHIVE_PCK)
pickle_mtime = stat.st_mtime
if stat.st_uid != os.getuid():
pickle_mtime = 0
except:
pickle_mtime = 0
import pickle, json
if pickle_mtime < mbox_mtime:
import mailbox
mbox = mailbox.UnixMailbox(open(ARCHIVE_MBOX, 'r'))
messages = []
for msg in mbox:
messages.append({
'subject': msg['subject'],
'date': msg['date'],
'from': msg['from']
})
pck = open(ARCHIVE_PCK, 'w')
pickle.dump(messages, pck)
else:
pck = open(ARCHIVE_PCK, 'r')
messages = pickle.load(pck)
print 'Content-Type: application/json\r\n\r\n' + json.dumps(messages[-3:])