#!/bin/env python from mailmanclient import Client import os import sys import argparse try: import json except ImportError: import simplejson as json 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') LIST_NAME= 'apachesvn@lists.med.stanford.edu' #parser.add_argument('list_fqdn') action_group = parser.add_mutually_exclusive_group() action_group.add_argument('--dump', action='store_true', default=False) action_group.add_argument( '--set', help='set single setting in a form: <setting_name>=<setting_value>') 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) args = parser.parse_args() client = Client(args.core_uri, args.core_user, args.core_password) #ml_fqdn = args.list_fqdn #ml = client.get_list(ml_fqdn) ml = client.get_list(LIST_NAME) if args.dump: members_hash={} for member in ml.members: #members_hash['user']=member.user #members_hash['address']= member.address #members_hash['list_id']= member.list_id #members_hash['email']= member.email members_hash['dump'] = member.rest_data #held_data[held.request_id] = held.rest_data #members_hash['preferences']= member.preferences print json.dumps(members_hash, indent=2) #json.dumps(ml.members) elif args.set: (setting, value) = args.set.split('=', 1) set_value(ml, setting, value) elif args.update: if args.update == '-': f = sys.stdin else: f = open(args.update, 'r') updated_settings = json.loads(f.read()) update_settings(ml, updated_settings) if args.update != '-': f.close()