Newer
Older
#!/usr/local/bin python
from mailmanclient import Client
import os
import sys

Mr. Dmitry Makovey
committed
import argparse

Mr. Dmitry Makovey
committed
if __name__ == '__main__':
parser = argparse.ArgumentParser(description="Delete members")

Mr. Dmitry Makovey
committed
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')

Mr. Dmitry Makovey
committed
parser.add_argument('--list-fqdn', dest='list_fqdn',
required=True)
parser.add_argument('--members', dest='members',
action='append', default=None)
parser.add_argument('--members-file', dest='list', default=None)
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()

Mr. Dmitry Makovey
committed
# client = Client(CORE_URI, CORE_USER, CORE_PASS)
client = Client(args.core_uri, args.core_user, args.core_password)
ml_fqdn = args.list_fqdn
member_list = args.members
member_file = None
if args.list:
if args.list == '-':
member_file = sys.stdin
else:
member_file = open(args.list, 'r')
for m in member_file:
member_list.append(m.strip())
if args.list and args.list != '-':
member_file.close()

Mr. Dmitry Makovey
committed
for member_email in member_list:
ml = client.get_list(ml_fqdn)
try:
ml.unsubscribe(member_email)
print("{} unsubscribed".format(member_email))
except ValueError:
print("WARNING: {} is already unsubscribed".format(member_email))