Newer
Older
#!/bin/env python
from mailmanclient import Client
import os
import sys
import argparse
try:
import json
except ImportError:
import simplejson as json
def get_client(args):
"""Helper function to get Client object based on args"""
client = Client(args.core_uri, args.core_user, args.core_password)
return client
def get_ml(args):
"""Helper function to get Mailing list and Client object based on args"""
client = get_client(args)
ml_fqdn = args.list_fqdn
ml = client.get_list(ml_fqdn)
return (client, ml)
def held_list2(args):
if args.fields:
data_hash = {}
for f in args.fields:
data_hash[f] = held.rest_data[f]
if not args.detailed:
def held_list(args):
client, ml = get_ml(args)
held_data = []
page = ml.get_held_page(count=100)
while len(page) > 0:
for held in page:
if args.fields:
data_hash = {}
for f in args.fields:
data_hash[f] = held.rest_data[f]
held_data.append(data_hash)
else:
held_data.append(held.rest_data)
if not args.detailed:
del held_data[-1]['msg']
page = page.next
print json.dumps(held_data, indent=2)
results = []
for id in args.ids:
held_msg = ml.get_held_message(id)
results.append(held_msg.accept())
print json.dumps(results, indent=2)
results = []
for id in args.ids:
held_msg = ml.get_held_message(id)
results.append(held_msg.reject())
print json.dumps(results, indent=2)
def held_discard(args):
client, ml = get_ml(args)
results = []
for id in args.ids:
held_msg = ml.get_held_message(id)
results.append(held_msg.discard())
print json.dumps(results, indent=2)
def held_delete(args):
client, ml = get_ml(args)
results = []
for id in args.ids:
held_msg = ml.get_held_message(id)
results.append(held_msg.delete())
print json.dumps(results, indent=2)
def held_defer(args):
client, ml = get_ml(args)
results = []
for id in args.ids:
held_msg = ml.get_held_message(id)
results.append(held_msg.defer())
print json.dumps(results, indent=2)
def requests_list(args):
client, ml = get_ml(args)
print json.dumps(requests_data, indent=2)
def requests_approve(args):
client, ml = get_ml(args)
requests = ml.requests
if request['token'] in args.tokens:
response.append(ml.moderate_request(request['token'], 'accept'))
print json.dumps(response, indent=2)
client, ml = get_ml(args)
requests = ml.requests
if request['token'] in args.tokens:
response.append(ml.moderate_request(request['token'], 'reject'))
print json.dumps(response, indent=2)
def requests_discard(args):
client, ml = get_ml(args)
requests = ml.requests
response = []
for request in requests:
if request['token'] in args.tokens:
response.append(ml.moderate_request(request['token'], 'discard'))
print json.dumps(response, indent=2)
def requests_defer(args):
client, ml = get_ml(args)
requests = ml.requests
response = []
for request in requests:
if request['token'] in args.tokens:
response.append(ml.moderate_request(request['token'], 'defer'))
print json.dumps(response, indent=2)
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
def dump(ml):
print json.dumps(dict(ml.settings), indent=2)
def set_value(ml, setting, value):
ml.settings[setting] = value
ml.settings.save()
def update_settings(ml, updated_settings):
print json.dumps(updated_settings, indent=2)
for setting in updated_settings.keys():
ml.settings[setting] = updated_settings[setting]
ml.save()
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Manipulate mailing list settings")
CORE_URI = os.environ.get('MAILMAN_CORE_URI',
'http://mailman-core:8001/3.1')
CORE_USER = os.environ.get('MAILMAN_REST_USER', 'restadmin')
CORE_PASS = os.environ.get('MAILMAN_REST_PASSWORD', 'restpass')
parser.add_argument('list_fqdn')
parser.add_argument('--core-uri', dest='core_uri',
default=CORE_URI)
parser.add_argument('--rest-user', dest='core_user',
default=CORE_USER)
parser.add_argument('--rest-password', dest='core_password',
default=CORE_PASS)
subparsers = parser.add_subparsers(help='manage held messages')
held_parser = subparsers.add_parser('held')
held_subparsers = held_parser.add_subparsers()
held_list_parser = held_subparsers.add_parser('list')
held_list_parser.set_defaults(func=held_list)
held_list_parser.add_argument('--detailed', action='store_true',
default=False
)
held_list_parser.add_argument('--field', dest='fields',
action='append', default=None)
held_approve_parser = held_subparsers.add_parser('approve')
held_approve_parser.set_defaults(func=held_approve)
held_approve_parser.add_argument('--id', dest='ids', action='append')
held_reject_parser = held_subparsers.add_parser('reject')
held_reject_parser.set_defaults(func=held_reject)
held_reject_parser.add_argument('--id', dest='ids', action='append')
held_discard_parser = held_subparsers.add_parser('discard')
held_discard_parser.set_defaults(func=held_discard)
held_discard_parser.add_argument('--id', dest='ids', action='append')
held_delete_parser = held_subparsers.add_parser('delete')
held_delete_parser.set_defaults(func=held_delete)
held_delete_parser.add_argument('--id', dest='ids', action='append')
held_defer_parser = held_subparsers.add_parser('defer')
held_defer_parser.set_defaults(func=held_defer)
held_defer_parser.add_argument('--id', dest='ids', action='append')
requests_parser = subparsers.add_parser('requests')
requests_subparsers = requests_parser.add_subparsers()
requests_list_parser = requests_subparsers.add_parser('list')
requests_list_parser.set_defaults(func=requests_list)
requests_approve_parser = requests_subparsers.add_parser('approve')
requests_approve_parser.set_defaults(func=requests_approve)
requests_approve_parser.add_argument('--token', dest='tokens', action='append')
requests_reject_parser = requests_subparsers.add_parser('reject')
requests_reject_parser.set_defaults(func=requests_reject)
requests_reject_parser.add_argument('--token', dest='tokens', action='append')
requests_discard_parser = requests_subparsers.add_parser('discard')
requests_discard_parser.set_defaults(func=requests_discard)
requests_discard_parser.add_argument('--token', dest='tokens', action='append')
requests_defer_parser = requests_subparsers.add_parser('defer')
requests_defer_parser.set_defaults(func=requests_defer)
requests_defer_parser.add_argument('--token', dest='tokens', action='append')