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)
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/moderate mailing lists")
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')