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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
import os
import cmd
import configparser
from pathlib import PurePath
from mailmanclient.client import Client
class ModShell(cmd.Cmd):
intro = 'Type help or ? for a list of commands'
def __init__(self, client, mlist):
self.client = client;
self.mlist = mlist;
self.prompt = '({:s}) '.format(mlist.list_name)
cmd.Cmd.__init__(self)
def emptyline(self):
pass
def print_held(self):
self.held_messages = self.mlist.get_held_page (50,1)
print ()
for msg in self.held_messages:
print(msg.request_id, msg.subject, msg.sender)
print ()
def matching_request_ids(self,text):
candidates = []
prefix_len = len(text)
if text == "page"[0:prefix_len]:
candidates.append('page')
for msg in self.held_messages:
string = str(msg.request_id)
if text == string[0:prefix_len]:
candidates.append(string)
return candidates
def complete_discard(self, text, line, begidx, endidx):
return self.matching_request_ids(text)
def do_discard(self, arg):
'''
discard <number> | page
'''
try:
if arg == 'page':
for msg in self.held_messages:
msg.discard()
else:
n = int(arg)
self.mlist.get_held_message (n).discard()
except ValueError:
print('Illegal request_id: {:s}'.format(arg))
return False
def preloop(self):
self.print_held()
def postcmd(self, stop, line):
if (not stop):
self.print_held()
return stop
def do_EOF(self,arg):
'exit'
return True
def do_quit(self,arg):
'''
exit moderation shell
'''
return True
def main ():
home = os.environ.get('HOME')
xdg_config_home = os.environ.get('XDG_CONFIG_HOME') or \
os.path.join(home, '.config')
config_path = PurePath (xdg_config_home, 'mm3mod', 'config.ini')
config = configparser.ConfigParser ()
with open(config_path) as f:
config.read_file (f)
baseurl = config.get('rest', 'baseurl', fallback="http://localhost:8001/3.1/")
user = config.get('rest', 'user', fallback='restadmin')
password = config.get('rest', 'password')
client = Client (baseurl, name=user, password=password);
list_name = config.get('list','name')
mlist = client.get_list (list_name)
ModShell(client, mlist).cmdloop()
if __name__ == "__main__":
main()
|