Apply common configuration changes to each mailing list
This commit is contained in:
parent
303ddc002c
commit
106d7b74c4
@ -8,10 +8,52 @@ import argparse
|
||||
import os
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
import requests
|
||||
|
||||
|
||||
def config_list(mailman_bin: Path, mailing_list: str):
|
||||
config_changes = """
|
||||
# TODO: set real_name, moderator, subject prefix, and reply-to address
|
||||
from_is_list = 1
|
||||
anonymous_list = 1
|
||||
first_strip_reply_to = 1
|
||||
reply_goes_to_list = 2
|
||||
|
||||
# quiet member management
|
||||
send_reminders = 0
|
||||
send_welcome_msg = 0
|
||||
send_goodbye_msg = 0
|
||||
|
||||
new_member_options = 272
|
||||
advertised = 0
|
||||
private_roster = 2 # only admins can view the roster
|
||||
default_member_moderation = 1
|
||||
|
||||
generic_nonmember_action = 3 # discard non-member emails
|
||||
forward_auto_discards = 0 # don't notify admin about discards
|
||||
"""
|
||||
|
||||
with tempfile.NamedTemporaryFile("w", suffix=".py") as config_file:
|
||||
config_file.write(config_changes)
|
||||
config_file.flush()
|
||||
output = subprocess.run(
|
||||
[
|
||||
mailman_bin / "config_list",
|
||||
"--verbose",
|
||||
"--inputfile",
|
||||
config_file.name,
|
||||
mailing_list,
|
||||
],
|
||||
encoding="ascii",
|
||||
capture_output=True,
|
||||
check=True,
|
||||
)
|
||||
for line in output.stderr.splitlines():
|
||||
print(f"[Configuring {mailing_list}] {line}")
|
||||
|
||||
|
||||
def sync_members(
|
||||
mailman_bin: Path, mailing_list: str, members: list[str], dry_run: bool
|
||||
):
|
||||
@ -55,6 +97,8 @@ def main(mailman_bin: Path, api: str, api_auth: str, list_suffix: str, dry_run:
|
||||
for name, members in certification_lists.items():
|
||||
list_name = name + list_suffix
|
||||
if list_name in existing_lists:
|
||||
print(f"Configuring/syncing {list_name}...")
|
||||
config_list(mailman_bin, list_name)
|
||||
sync_members(mailman_bin, list_name, members, dry_run)
|
||||
else:
|
||||
print(f"Skipping {list_name}, as it does not exist in Mailman")
|
||||
|
Loading…
Reference in New Issue
Block a user