[Mailman-Users] Script to list users with nomail property set to 1

Richard Barrett r.barrett at openinfo.co.uk
Tue Feb 17 12:04:24 CET 2004


On 17 Feb 2004, at 06:48, Geoff Powell wrote:

> Hello,
>
> I have been using mailman's withlist feature with a basic python script
> called nomail, to list all users in a database with the nomail property
> set to 1, it looked something like:
>
> import sys
>
> from Mailman import mm_cfg
>
> def nomail(list):
> 	for member in list.members.keys()
> 		if list.user_options[member] &&
> Mailman.mm_cfg.DisableDelivery:
> 			print member
> 	pass
>
> 	for member in list.digest_members.keys()
> 		if list.user_options[member] &&
> Mailman.mm_cfg.DisableDelivery:
> 			print member
> 	pass
> 	
> 	sys.exit(0)
>
> (There could be errors in this code block)
>
> Since updating the system, and mailman is now version 2.1.2-2, the
> script is not working correctly. It appears to be printing out ALL 
> users
> in the database, indicating they all have the nomail field set to 1.
>
> I have found that in /var/mailman/Mailman/Defaults.py, there is a line
> with a comment next to DisableDelivery stating it is obsolete (and
> DisableDelivery is set to 1, I assume this is why the users all have 
> the
> value as 1?). The line says I should use getDeliveryStatus(), is there
> any documentation on how I can update my script to utilise this method,
> or can anyone please give me a hint?

This works for me:

1. with $prefix/Mailman as your pwd, use the following command to find 
where the function is defined in the Python source:

find . -name "*.py" | xargs grep "def getDeliveryStatus"

2. from the output pick a module that implements the function; there 
are several implementations defined in different modules on different 
classes

3. either read the code or use withlist to read the function's docstring

mailman at mailman:/mailman/run/Mailman> ../bin/withlist -i all-users-list
Loading list all-users-list (unlocked)
The variable `m' is the all-users-list MailList instance
 >>> from Mailman import MemberAdaptor
 >>> print MemberAdaptor.MemberAdaptor.getDeliveryStatus.__doc__
Return the delivery status of this member.

         Value is one of the module constants:

             ENABLED  - The deliveries to the user are not disabled
             UNKNOWN  - Deliveries are disabled for unknown reasons.  The
                        primary reason for this to happen is that we've 
copied
                        their delivery status from a legacy version 
which didn't
                        keep track of disable reasons
             BYUSER   - The user explicitly disable deliveries
             BYADMIN  - The list administrator explicitly disabled 
deliveries
             BYBOUNCE - The system disabled deliveries due to bouncing

         If member is not a member of the list, raise NotAMemberError.
  >>>
Finalizing
mailman at mailman:/mailman/run/Mailman>

>
> Thanks in advance,
>
> Geoff
>
-----------------------------------------------------------------------
Richard Barrett                               http://www.openinfo.co.uk





More information about the Mailman-Users mailing list