summaryrefslogtreecommitdiff
path: root/cgi/archives
blob: 28c2106e652d0eec14bbd502693944e9cc9ae85e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/local/bin/python
# We don't need to lock in this script, because we're never going to change data.

import sys
sys.path.append('/home/mailman/mailman/modules')

import os, types, posix, string
import mm_utils, maillist, htmlformat

try:
    sys.stderr = mm_utils.StampedLogger("error", label = 'mmroster',
                                        manual_reprime=1, nofail=0)
except IOError:
    pass                        # Oh well - SOL on redirect, errors show thru.


print "Content-type: text/html"
print

path = os.environ['PATH_INFO']
list_info = mm_utils.GetPathPieces(path)

if len(list_info) < 1:
    print "<h2>Invalid options to CGI script.</h2>"
    sys.exit(0)

list_name = string.lower(list_info[0])

try:
  list = maillist.MailList(list_name)
except:
  print "<h2>%s: No such list.</h2>" % list_name
  sys.exit(0)

if not list._ready:
    print "<h2>%s: No such list.</h2>" % list_name
    sys.exit(0)

def GetArchiveList(list):
    archive_list = htmlformat.UnorderedList()
    
    def ArchiveFilter(str):
	if str[:7] <> 'volume_':
	    return 0
	try:
	    x = eval(str[7:])
	    if type(x) <> types.IntType:
		return 0
	    if x < 1:
		return 0
	    return 1
	except:
	    return 0
    try:
	dir_listing = filter(ArchiveFilter, os.listdir(list.archive_directory))
    except posix.error:
	return "<h3><em>No archives are currently available.</em></h3>"
    if not len(dir_listing):
	return "<h3><em>No archives are currently available.</em></h3>"
    for dir in dir_listing:
	link = htmlformat.Link(os.path.join(list._base_archive_url, dir),
			       "Volume %s" % dir[7:])
	archive_list.AddItem(link)

    return archive_list.Format()
	
    
    

replacements = list.GetStandardReplacements()
replacements['<mm-archive-list>'] = GetArchiveList(list)

# Just doing print list.ParseTags(...) calls ParseTags twice???
text = list.ParseTags('archives.html', replacements)
print text