Update core
[platal.git] / upgrade / 0.9.16 / upgrade_lists.py
1 #!/usr/bin/python
2
3 import sys
4 sys.path.append('/usr/lib/mailman/bin')
5 import paths
6 from Mailman import MailList
7 from Mailman import Utils
8 from Mailman import mm_cfg
9
10 def get_bogo_level(mlist):
11 """ Retreive the old style bogo level """
12 try:
13 if mlist.header_filter_rules == []:
14 return 0
15 try:
16 action = mlist.header_filter_rules[1][1]
17 return 2
18 except:
19 action = mlist.header_filter_rules[0][1]
20 if action == mm_cfg.HOLD:
21 return 1
22 elif action == mm_cfg.DISCARD:
23 return 3
24 except:
25 return 0
26
27 def set_bogo_level(mlist, level):
28 """ Convert bogo level to the new level structure """
29 if level == 0:
30 return
31 hfr = []
32 if level == 1:
33 hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
34 hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False))
35 elif level == 2:
36 hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
37 hfr.append(('X-Spam-Flag: Yes, tests=bogofilter, spamicity=(0\.999999|1\.000000)', mm_cfg.DISCARD, False))
38 hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.HOLD, False))
39 elif level == 3:
40 hfr.append(('X-Spam-Flag: Unsure, tests=bogofilter', mm_cfg.HOLD, False))
41 hfr.append(('X-Spam-Flag: Yes, tests=bogofilter', mm_cfg.DISCARD, False))
42 mlist.Lock()
43 mlist.header_filter_rules = hfr
44 mlist.Save()
45 mlist.Unlock()
46
47
48 names = Utils.list_names()
49 names.sort()
50 for name in names:
51 mlist = MailList.MailList(name, lock=0)
52 set_bogo_level(mlist, get_bogo_level(mlist))
53