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_list(args):
client, ml = get_ml(args)
held_data = {}
for held in ml.held:
if args.fields:
data_hash = {}
for f in args.fields:
data_hash[f] = held.rest_data[f]
held_data[held.request_id] = data_hash
else:
held_data[held.request_id] = held.rest_data
if not args.detailed:
del held_data[held.request_id]['msg']
print json.dumps(held_data, indent=2)
def held_approve(args):
client, ml = get_ml(args)
held_msg = ml.get_held_message(args.id)
held_msg.accept()
client, ml = get_ml(args)
held_msg = ml.get_held_message(args.id)
held_msg.reject()
def requests_list(args):
client, ml = get_ml(args)
requests_data = {}
for request in ml.requests:
requests_data[request['email']] = request
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
print json.dumps(requests_data, indent=2)
def requests_approve(args):
pass
def requests_reject(args):
pass
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')
# XXX action_group = parser.add_mutually_exclusive_group()
# XXX action_group.add_argument('--dump', action='store_true', default=False)
# XXX action_group.add_argument(
# XXX '--set', help='set single setting in a form: <setting_name>=<setting_value>')
# XXX action_group.add_argument('--update', help='update settings with contents of the file provided')
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_reject_parser = held_subparsers.add_parser('reject')
held_reject_parser.set_defaults(func=held_reject)
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_reject_parser = requests_subparsers.add_parser('reject')
requests_reject_parser.set_defaults(func=requests_reject)
args = parser.parse_args()