[Mailman-Users] subscribing subscribers to topics

Jim Tittsler jwt at onjapan.net
Fri Jun 11 06:34:37 CEST 2004

On Jun 11, 2004, at 07:33, Christopher Adams wrote:

> Is there a way, other than using the subscriber user page to subsribe 
> subscribers to specific topics?. I have a list of about 1000 
> subscribers that I would like to break out into 5 topics. I don't want 
> to rely on the subscribers to have to do this. So, any ideas on how to 
> do this in batch via one of the provided MM utilities or other 
> methods?

You can do this sort of thing with bin/withlist, taking advantage of 
the documentation that is embedded in Mailman/MemberAdaptor.py.

Create a file called addtopic.py:

from Mailman.Errors import NotAMemberError
from Mailman import mm_cfg
import sys

def addtopic(m, addr, topic):
         if topic not in [x[0] for x in m.topics]:
             print topic, "is not a valid topic for list"
         topic_list = m.getMemberTopics(addr)
         # add the topic for this member if not already subscribed
         if topic not in topic_list:
             m.setMemberTopics(addr, topic_list + [topic])
         # set subscriber to not receive non-topical posts
         m.setMemberOption(addr, mm_cfg.ReceiveNonmatchingTopics, 
     except NotAMemberError:
         print 'No address matched:', addr

Then to have a user on "mylist" watch the "pickles" topic:

$ bin/withlist -l -r addtopic mylist luser at domain.com pickles

bin/withlist gives you the full power of Python to play with, so you 
could replace 'topic'  with a variable number of arguments (so you 
could subscribe the user to multiple topics at once), or replace their 
topics instead of appending to them, or loop through a file of users to 
set them all in one go (instead of doing the looping at the shell 
level), or whatever...

Jim Tittsler             http://www.OnJapan.net/      GPG: 0x01159DB6
Python Starship          http://Starship.Python.net/
Ringo MUG Tokyo          http://www.ringo.net/rss.html

More information about the Mailman-Users mailing list