diff options
| author | bwarsaw | 2001-07-19 06:31:09 +0000 |
|---|---|---|
| committer | bwarsaw | 2001-07-19 06:31:09 +0000 |
| commit | f55c95e2c9bfc437a72d5040fbdda521c9557ebe (patch) | |
| tree | 03f34567de07beb4d45db5a4d92f5b454140143f | |
| parent | 5c9b890e83e5ae5be1385d9057cfd4105e0d73e0 (diff) | |
| download | mailman-f55c95e2c9bfc437a72d5040fbdda521c9557ebe.tar.gz mailman-f55c95e2c9bfc437a72d5040fbdda521c9557ebe.tar.zst mailman-f55c95e2c9bfc437a72d5040fbdda521c9557ebe.zip | |
| -rw-r--r-- | Mailman/Post.py | 58 | ||||
| -rw-r--r-- | Mailman/TopicMgr.py | 61 |
2 files changed, 119 insertions, 0 deletions
diff --git a/Mailman/Post.py b/Mailman/Post.py new file mode 100644 index 000000000..50d6bb9b7 --- /dev/null +++ b/Mailman/Post.py @@ -0,0 +1,58 @@ +#! /usr/bin/env python +# +# Copyright (C) 2001 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +import sys + +from Mailman import mm_cfg +from Mailman.Queue.sbcache import get_switchboard + + + +def inject(listname, msg, recips=None): + inq = get_switchboard(mm_cfg.INQUEUE_DIR) + kws = {'listname': listname, + 'tolist' : 1, + } + if recips: + kws['recips'] = recips + inq.enqueue(msg, **kws) + + + +if __name__ == '__main__': + # When called as a command line script, standard input is read to get the + # list that this message is destined to, the list of explicit recipients, + # and the message to send (in its entirety). stdin must have the + # following format: + # + # line 1: the internal name of the mailing list + # line 2: the number of explicit recipients to follow. 0 means to use the + # list's membership to calculate recipients. + # line 3 - 3+recipnum: explicit recipients, one per line + # line 4+recipnum - end of file: the message in RFC 822 format (may + # include an initial Unix-from header) + listname = sys.stdin.readline().strip() + numrecips = int(sys.stdin.readline()) + if numrecips == 0: + recips = None + else: + recips = [] + for i in range(numrecips): + recips.append(sys.stdin.readline().strip()) + # If the message isn't parsable, we won't get an error here + inject(listname, sys.stdin.read(), recips) diff --git a/Mailman/TopicMgr.py b/Mailman/TopicMgr.py new file mode 100644 index 000000000..cd0fee797 --- /dev/null +++ b/Mailman/TopicMgr.py @@ -0,0 +1,61 @@ +# Copyright (C) 2001 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +"""This class mixes in topic feature configuration for mailing lists. +""" + +import re + +from Mailman import mm_cfg +from Mailman.i18n import _ + + + +class TopicMgr: + def InitVars(self): + # Configurable + # + # `topics' is a list of 4-tuples of the following form: + # + # (name, pattern, description, emptyflag) + # + # name is a required arbitrary string displayed to the user when they + # get to select their topics of interest + # + # pattern is a required verbose regular expression pattern which is + # used as IGNORECASE. + # + # description is an optional description of what this topic is + # supposed to match + # + # emptyflag is a boolean used internally in the admin interface to + # signal whether a topic entry is new or not (new ones which do not + # have a name or pattern are not saved when the submit button is + # pressed). + self.topics = [] + self.topics_enabled = 0 + self.topics_bodylines_limit = 5 + # Non-configurable + # + # This is a mapping between user "names" (i.e. addresses) and + # information about which topics that user is interested in. The + # values are a list of topic names that the user is interested in, + # which should match the topic names in self.topics above. + # + # If the user has not selected any topics of interest, then the rule + # is that they will get all messages, and they will not have an entry + # in this dictionary. + self.topics_userinterest = {} |
