Skip to content
Snippets Groups Projects
Commit a72cc390 authored by Conrad Holmberg's avatar Conrad Holmberg
Browse files

Added option to scrub out an email list.

parent 85cf1644
No related branches found
No related tags found
No related merge requests found
......@@ -2,8 +2,9 @@
from mailmanclient import Client
# This program dumps all the user deails
# from a given email list into json outputself.
# The output json can then be taken as input and
# from a given email list into json output.
# The output json can then be taken as input to suscribe users from a source
# into a target.
import os
import sys
......@@ -46,9 +47,10 @@ def dump_fqdn_members(client,ml_fqdn ):
print json.dumps(members_hash, indent=2)
# end dump_fqdn_memberss
def restore_members( members_file ):
def restore_members( members_file, scrub ):
"""Creates Code to Restore Members of a source/target email list."""
"""The scrub option determines if the current target scriptions are wiped."""
tgt_list = None #email list of target members
......@@ -61,6 +63,8 @@ def restore_members( members_file ):
for src_member in data['members']:
# get target the email list
if (tgt_list is None):
if ( scrub ):
scrub_members( src_member['list_fqdn'] )
tgt_list = client.get_list(src_member['list_fqdn'])
# Get members from the current email list
tgt_members = [str(tgt_member.email) for tgt_member in tgt_list.members]
......@@ -78,22 +82,38 @@ def restore_members( members_file ):
pre_confirmed=True,
pre_approved=True)
# set the preferences
src_prefs = src_member['preferences']
tgt_prefs = tgt_list.get_member(src_member['email']).preferences
for src_pref in src_prefs:
if (src_prefs[src_pref] is not None):
tgt_pref = str(src_prefs[src_pref])
#print ('preference: '+src_pref+'='+str(src_prefs[src_pref]))
else:
tgt_pref = src_pref+'=None'
tgt_prefs[src_pref] = tgt_pref
# tgt_prefs['delivery_mode'] = src_member['preferences']['delivery_mode']
tgt_prefs.save()
set_preferences(src_member['preferences'],
tgt_list.get_member(src_member['email']).preferences)
if members_file != '-':
json_file.close()
#end restore_members
def scrub_members( list_fqdn ):
scrub_list = client.get_list(list_fqdn)
"""Unsubscribes all the members from an email list."""
scrub_members = [str(scrub_member.email) for scrub_member in scrub_list.members]
for scrub_email in scrub_members:
client.unsubscribe(scrub_email)
#end scrub_members
def set_preferences(src_prefs, tgt_prefs):
"""Sets preferences on user."""
tgt_pref = None
for src_pref in src_prefs:
if (src_prefs[src_pref] is not None):
tgt_pref = str(src_prefs[src_pref])
#print ('preference: '+src_pref+'='+str(src_prefs[src_pref]))
else:
tgt_pref = src_pref+'=None'
tgt_prefs[src_pref] = tgt_pref
#tgt_prefs['delivery_mode'] = src_member['preferences']['delivery_mode']
tgt_prefs.save()
#end set_preferences
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Manage Users in Mailman Email Lists.")
......@@ -107,7 +127,10 @@ if __name__ == '__main__':
# user invoked variables
parser.add_argument('-l','--list-fqdn')
parser.add_argument('-r','--restore')
parser.add_argument('-r','--restore',
help='Subscribes users from a source email list into a tareget email list if not already added.')
parser.add_argument('-s','--scrub',
help='Removes all users from a target email list and suscribes the current.')
# 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)
......@@ -136,4 +159,7 @@ if __name__ == '__main__':
"\nSee List\n"+str(ml_fqdns))
#end if
elif args.restore:
restore_members( args.restore)
if args.scrub:
restore_members( args.restore, True)
else:
restore_members( args.restore, False)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment