Newer
Older
#!/bin/env python
from mailmanclient import Client
import os
import sys
import argparse
try:
import json
except ImportError:
import simplejson as json
Conrad Holmberg
committed
def get_email_lists(email_lists):
members = ''
for email_list in email_lists:
members += email_list+"\n"
Conrad Holmberg
committed
return members
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Dump Mailing List based on alias.")
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' # just a tesing default
parser.add_argument('list_fqdn', default=LIST_NAME)
# parser.add_argument(
# '-m', '--members', help='Dumps a full members list from an email list <members>=<email_list or ALL>')
parser.add_argument('-l', '--list', action='store_true', default=False,
help='Shows the email lists. (i.e.,apachesvn@lists.med.stanford.edu )')
parser.add_argument('-f', '--file', help='Places input into a file. <file=file_name>')
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)
# Parse out the command line arguments
client = Client(args.core_uri, args.core_user, args.core_password)
# append the mail lists to an array from client
email_lists = []
for mlist in client.lists:
email_lists.append(mlist.fqdn_listname)
if args.list_fqdn:
members_hash = {}
Conrad Holmberg
committed
# obtain email list from argument
email_list = args.list_fqdn
# get lists
if email_list in email_lists:
#member_list = client.get_list(LIST_NAME)
Conrad Holmberg
committed
# Get members from email list
member_list = client.get_list(email_list)
Conrad Holmberg
committed
# Get json data from each member
for member in member_list.members:
# members_hash['user']=member.user
#members_hash['address']= member.address
#members_hash['list_id']= member.list_id
#members_hash['email']= member.email
Conrad Holmberg
committed
members_hash['address'] = member.address.rest_data
#held_data[held.request_id] = held.rest_data
#members_hash['preferences']= member.preferences
print json.dumps(members_hash, indent=2)
# Get all the member
elif email_list.upper() == 'ALL':
member_list = client.get_list(LIST_NAME)
print "Watch out this prints all Members."
# Get json data from each member
for member in member_list: # client.members:
print member.email
sys.exit('Error: Email list"'+email_list+'" does not exist in domain '+args.core_uri +
"\nSee List\n"+get_email_lists(email_lists))
# option just to show email lists
Conrad Holmberg
committed
print get_email_lists(email_lists)