Newer
Older
#!/bin/env python
from mailmanclient import Client
import os
import sys
import time
import argparse
try:
import json
except ImportError:
import simplejson as json
def get_ml_fqdns(ml_fqdns):
"""Get the entire email list members"""
Conrad Holmberg
committed
members = ''
for ml_fqdn in ml_fqdns:
members += ml_fqdn+"\n"
Conrad Holmberg
committed
return members
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Manage Users in Mailman Email 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')
# Default Email list
LIST_NAME = 'apachesvn@lists.med.stanford.edu'
parser.add_argument('-l','--list_fqdn')
parser.add_argument('-r','--restore')
# Add arguments for env variables
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
ml_fqdns.append(mlist.fqdn_listname)
Conrad Holmberg
committed
# obtain email list from argument
Conrad Holmberg
committed
# Get members from email list
member_list = client.get_list(ml_fqdn)
data = {}
members_hash['members'] = []
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['members'].append({
'list_fqdn': args.list_fqdn,
'email': member.email,
'display_name': member.user.display_name
#held_data[held.request_id] = held.rest_data
#members_hash['preferences']= member.preferences
#print "S###########################"
#print json.dumps(member.rest_data, indent=2)
#print json.dumps(member.user.rest_data, indent=2)
#print json.dumps(members_hash, indent=2)
#print "E###########################"
#print("debug"+str(member))
# Get all the members
elif ml_fqdn.upper() == 'ALL':
members_hash={}
print "I couldn't get this to finsih!!!."
members_hash = {}
# grabs users per page
page = client.get_user_page(count=100, page=1)
# loop through each page
while len(page) > 0:
for member in page:
print json.dumps(member.addresses.rest_data, indent=2)
time.sleep(.100) #pause between pages
page = page.next
# # Get json data from each member
# for member in client.members:
# members_hash['email']= member.email
# print json.dumps(members_hash, indent=2)
sys.exit('Error: Email list"'+ml_fqdn+'" does not exist in domain '+args.core_uri +
#Open user list dump file
print "restoring file."
if args.restore == '-':
user_file = args.restore
with open(user_file) as json_file:
data = json.load(json_file)
#print json.dumps(datam, indent=2)
for member in data['members']:
#print(str(member))
print('list_fqdn:'+ member['list_fqdn'])
#print('display_name'+ member['display_name'])
#print('email'+ member['email'])
#new_member_list.append(member_email)
if args.restore != '-':