aboutsummaryrefslogtreecommitdiffstats
path: root/Mailman
diff options
context:
space:
mode:
authorMark Sapiro <msapiro@value.net>2012-03-25 13:45:51 -0700
committerMark Sapiro <msapiro@value.net>2012-03-25 13:45:51 -0700
commit097ad5a0a6a1df417b6129a7992a353467367600 (patch)
treebacd4621e6a1cc844f812117dd6b7ac1c01f040b /Mailman
parentfbf25ca208265ed0b2a39aa29a198e2ca180eeeb (diff)
downloadmailman2-097ad5a0a6a1df417b6129a7992a353467367600.tar.gz
mailman2-097ad5a0a6a1df417b6129a7992a353467367600.tar.xz
mailman2-097ad5a0a6a1df417b6129a7992a353467367600.zip
Backported regular_exclude_ignore list attribute feature from 2.2 branch.
Diffstat (limited to 'Mailman')
-rw-r--r--Mailman/Defaults.py.in1
-rw-r--r--Mailman/Gui/NonDigest.py11
-rw-r--r--Mailman/Handlers/CalcRecips.py6
-rw-r--r--Mailman/Version.py2
-rw-r--r--Mailman/versions.py2
5 files changed, 21 insertions, 1 deletions
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in
index 9aebaea2..fb3f4f39 100644
--- a/Mailman/Defaults.py.in
+++ b/Mailman/Defaults.py.in
@@ -1027,6 +1027,7 @@ DEFAULT_UMBRELLA_MEMBER_ADMIN_SUFFIX = "-owner"
# Exclude/include (sibling) lists for non-digest delivery.
DEFAULT_REGULAR_EXCLUDE_LISTS = []
DEFAULT_REGULAR_INCLUDE_LISTS = []
+DEFAULT_REGULAR_EXCLUDE_IGNORE = True
ALLOW_CROSS_DOMAIN_SIBLING = False
# This variable controls whether monthly password reminders are sent.
diff --git a/Mailman/Gui/NonDigest.py b/Mailman/Gui/NonDigest.py
index 9af4a2be..411f5d4f 100644
--- a/Mailman/Gui/NonDigest.py
+++ b/Mailman/Gui/NonDigest.py
@@ -159,6 +159,17 @@ and footers:
Note also that the site administrator may prohibit cross domain
siblings.""")),
+ ('regular_exclude_ignore', mm_cfg.Toggle, (_('No'), _('Yes')), 0,
+ _("""Ignore regular_exlude_lists of which the poster is not a
+ member."""),
+ _("""If a post is addressed to this list and to one or more of
+ the exclude lists, regular members of those lists will not be
+ sent the post from this list, but if the poster is not a member
+ of an excluded list, the post may not be accepted by that list
+ which leaves the members of that list with no copy of the post.
+ Setting this to Yes ignores any of the exclude lists of which the
+ poster is not a member.""")),
+
('regular_include_lists', mm_cfg.EmailList, (3, WIDTH), 0,
_("""Other mailing lists on this site whose members are
included in the regular (non-digest) delivery if those
diff --git a/Mailman/Handlers/CalcRecips.py b/Mailman/Handlers/CalcRecips.py
index db10c432..39fe0671 100644
--- a/Mailman/Handlers/CalcRecips.py
+++ b/Mailman/Handlers/CalcRecips.py
@@ -179,6 +179,12 @@ def do_exclude(mlist, msg, msgdata, recips):
syslog('error', 'Exclude list %s is not in the same domain.',
listname)
continue
+ if mlist.regular_exclude_ignore:
+ for sender in msg.get_senders():
+ if slist.isMember(sender):
+ break
+ else:
+ continue
srecips = set([slist.getMemberCPAddress(m)
for m in slist.getRegularMemberKeys()
if slist.getDeliveryStatus(m) == ENABLED])
diff --git a/Mailman/Version.py b/Mailman/Version.py
index 54d11484..981cabdc 100644
--- a/Mailman/Version.py
+++ b/Mailman/Version.py
@@ -37,7 +37,7 @@ HEX_VERSION = ((MAJOR_REV << 24) | (MINOR_REV << 16) | (MICRO_REV << 8) |
(REL_LEVEL << 4) | (REL_SERIAL << 0))
# config.pck schema version number
-DATA_FILE_VERSION = 99
+DATA_FILE_VERSION = 100
# qfile/*.db schema version number
QFILE_SCHEMA_VERSION = 3
diff --git a/Mailman/versions.py b/Mailman/versions.py
index 8de192cd..84943efc 100644
--- a/Mailman/versions.py
+++ b/Mailman/versions.py
@@ -416,6 +416,8 @@ def NewVars(l):
mm_cfg.DEFAULT_REGULAR_EXCLUDE_LISTS)
add_only_if_missing('regular_include_lists',
mm_cfg.DEFAULT_REGULAR_INCLUDE_LISTS)
+ add_only_if_missing('regular_exclude_ignore',
+ mm_cfg.DEFAULT_REGULAR_EXCLUDE_IGNORE)