Skip to content
Snippets Groups Projects
Commit 1d53e5a7 authored by Mr. Dmitry Makovey's avatar Mr. Dmitry Makovey
Browse files

add manage_list.py

parent 8e1a3b8b
No related branches found
No related tags found
No related merge requests found
#!/bin/env python
from mailmanclient import Client
import os
import sys
import argparse
try:
import json
except ImportError:
import simplejson as json
def get_client(args):
"""Helper function to get Client object based on args"""
client = Client(args.core_uri, args.core_user, args.core_password)
return client
def get_ml(args):
"""Helper function to get Mailing list and Client object based on args"""
client = get_client(args)
ml_fqdn = args.list_fqdn
ml = client.get_list(ml_fqdn)
return (client, ml)
def held_list(args):
client, ml = get_ml(args)
held_data = {}
for held in ml.held:
held_data[held.request_id] = held
print json.dumps(held_data, indent=2)
def held_approve(args):
pass
def held_reject(args):
pass
def requests_list(args):
client, ml = get_ml(args)
requests_data = {}
for requests in ml.requests:
requests_data[requests.request_id] = requests
print json.dumps(requests_data, indent=2)
def requests_approve(args):
pass
def requests_reject(args):
pass
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')
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)
subparsers = parser.add_subparsers(help='manage held messages')
held_parser = subparsers.add_parser('held')
held_subparsers = held_parser.add_subparsers()
held_list_parser = held_subparsers.add_parser('list')
held_list_parser.set_defaults(func=held_list)
held_approve_parser = held_subparsers.add_parser('approve')
held_approve_parser.set_defaults(func=held_approve)
held_reject_parser = held_subparsers.add_parser('reject')
held_reject_parser.set_defaults(func=held_reject)
requests_parser = subparsers.add_parser('requests')
requests_subparsers = requests_parser.add_subparsers()
requests_list_parser = requests_subparsers.add_parser('list')
requests_list_parser.set_defaults(func=requests_list)
requests_approve_parser = requests_subparsers.add_parser('approve')
requests_approve_parser.set_defaults(func=requests_approve)
requests_reject_parser = requests_subparsers.add_parser('reject')
requests_reject_parser.set_defaults(func=requests_reject)
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)
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