diff options
author | bwarsaw <> | 2003-04-20 04:02:13 +0000 |
---|---|---|
committer | bwarsaw <> | 2003-04-20 04:02:13 +0000 |
commit | 04192d3afe33bcfd72f64bacaab4e70c627268f3 (patch) | |
tree | ed48393d475c6ad099ab27d8f016fd15e788686d | |
parent | 866b613202dd6b94091c7fec7a58d1878ec0f682 (diff) | |
download | mailman2-04192d3afe33bcfd72f64bacaab4e70c627268f3.tar.gz mailman2-04192d3afe33bcfd72f64bacaab4e70c627268f3.tar.xz mailman2-04192d3afe33bcfd72f64bacaab4e70c627268f3.zip |
Backporting from the trunk.
33 files changed, 347 insertions, 266 deletions
diff --git a/Mailman/Defaults.py.in b/Mailman/Defaults.py.in index 613cd7ce..819a9062 100644 --- a/Mailman/Defaults.py.in +++ b/Mailman/Defaults.py.in @@ -31,6 +31,16 @@ def minutes(m): return m * 60 def hours(h): return h * 60 * 60 def days(d): return d * 60 * 60 * 24 +# Some convenient constants +try: + True, False +except NameError: + True = 1 + False = 0 + +Yes = yes = On = on = True +No = no = Off = off = False + ##### @@ -91,8 +101,8 @@ MAILMAN_SITE_LIST = 'mailman' # makes me nervous to hand out site auth cookies because if this cookie is # cracked or intercepted, the intruder will have access to every list on the # site. OTOH, it's dang handy to not have to re-authenticate to every list on -# the site. Set this value to 1 to allow site admin cookies. -ALLOW_SITE_ADMIN_COOKIES = 0 +# the site. Set this value to Yes to allow site admin cookies. +ALLOW_SITE_ADMIN_COOKIES = No # Command that is used to convert text/html parts into plain text. This # should output results to standard output. %(filename)s will contain the @@ -112,12 +122,12 @@ HTML_TO_PLAIN_TEXT_COMMAND = '/usr/bin/lynx -dump %(filename)s' # DEFAULT_HOST_NAME. VIRTUAL_HOSTS = {} -# When set, the listinfo and admin overviews of lists on the machine will be -# confined to only those lists whose web_page_url configuration option host is -# included within the URL by which the page is visited - only those "on the -# virtual host". If unset, then all advertised (i.e. public) lists are -# included in the overview. -VIRTUAL_HOST_OVERVIEW = 1 +# When set to Yes, the listinfo and admin overviews of lists on the machine +# will be confined to only those lists whose web_page_url configuration option +# host is included within the URL by which the page is visited - only those +# "on the virtual host". When set to No, all advertised (i.e. public) lists +# are included in the overview. +VIRTUAL_HOST_OVERVIEW = On # Helper function; use this in your mm_cfg.py files. If optional emailhost is @@ -194,10 +204,11 @@ WEB_HIGHLIGHT_COLOR = '#dddddd' # If true, alternating rows PUBLIC_ARCHIVE_URL = 'http://%(hostname)s/pipermail/%(listname)s' # Are archives on or off by default? -DEFAULT_ARCHIVE = 1 # 0=Off, 1=On +DEFAULT_ARCHIVE = On # Are archives public or private by default? -DEFAULT_ARCHIVE_PRIVATE = 0 # 0=public, 1=private +# 0=public, 1=private +DEFAULT_ARCHIVE_PRIVATE = 0 # ARCHIVE_TO_MBOX #-1 - do not do any archiving @@ -207,7 +218,6 @@ DEFAULT_ARCHIVE_PRIVATE = 0 # 0=public, 1=private # use this to make both external archiving mechanism work and # mailman's builtin html archiving. the flat mail file can be # useful for searching, external archivers, etc. -# ARCHIVE_TO_MBOX = 2 # 0 - yearly @@ -221,16 +231,17 @@ DEFAULT_DIGEST_VOLUME_FREQUENCY = 1 # These variables control the use of an external archiver. Normally if # archiving is turned on (see ARCHIVE_TO_MBOX above and the list's archive* # attributes) the internal Pipermail archiver is used. This is the default if -# both of these variables are set to false. When either is set, the value -# should be a shell command string which will get passed to os.popen(). This -# string can contain %(listname)s for dictionary interpolation. The name of -# the list being archived will be substituted for this. +# both of these variables are set to No. When either is set, the value should +# be a shell command string which will get passed to os.popen(). This string +# can contain %(listname)s for dictionary interpolation. The name of the list +# being archived will be substituted for this. Please note that os.popen() is +# used. # # Note that if you set one of these variables, you should set both of them # (they can be the same string). This will mean your external archiver will # be used regardless of whether public or private archives are selected. -PUBLIC_EXTERNAL_ARCHIVER = 0 -PRIVATE_EXTERNAL_ARCHIVER = 0 +PUBLIC_EXTERNAL_ARCHIVER = No +PRIVATE_EXTERNAL_ARCHIVER = No # A filter module that converts from multipart messages to "flat" messages # (i.e. containing a single payload). This is required for Pipermail, and you @@ -272,11 +283,11 @@ ARCHIVE_SCRUBBER = 'Mailman.Handlers.Scrubber' # program. ARCHIVE_HTML_SANITIZER = 1 -# Set this to 1 to enable gzipping of the downloadable archive .txt file. +# Set this to Yes to enable gzipping of the downloadable archive .txt file. # Note that this is /extremely/ inefficient, so an alternative is to just # collect the messages in the associated .txt file and run a cron job every # night to generate the txt.gz file. See cron/nightly_gzip for details. -GZIP_ARCHIVE_TXT_FILES = 0 +GZIP_ARCHIVE_TXT_FILES = No # This sets the default `clobber date' policy for the archiver. When a # message is to be archived either by Pipermail or an external archiver, @@ -291,10 +302,10 @@ ARCHIVER_CLOBBER_DATE_POLICY = 2 ARCHIVER_ALLOWABLE_SANE_DATE_SKEW = days(15) # Pipermail archives contain the raw email addresses of the posting authors. -# Some view this as a goldmine for spam harvesters. Set this to true to +# Some view this as a goldmine for spam harvesters. Set this to Yes to # moderately obscure email addresses, but note that this breaks mailto: URLs # in the archives too. -ARCHIVER_OBSCURES_EMAILADDRS = 1 +ARCHIVER_OBSCURES_EMAILADDRS = Yes # Pipermail assumes that messages bodies contain US-ASCII text. # Change this option to define a different character set to be used as @@ -569,15 +580,15 @@ VERP_FORMAT = '%(bounces)s+%(mailbox)s=%(host)s' VERP_REGEXP = r'^(?P<bounces>[^+]+?)\+(?P<mailbox>[^=]+)=(?P<host>[^@]+)@.*$' # A perfect opportunity for doing VERP is the password reminders, which are -# already addressed individually to each recipient. This flag, if true, -# enables VERPs on all password reminders. -VERP_PASSWORD_REMINDERS = 0 +# already addressed individually to each recipient. Set this to Yes to enable +# VERPs on all password reminders. +VERP_PASSWORD_REMINDERS = No # Another good opportunity is when regular delivery is personalized. Here # again, we're already incurring the performance hit for addressing each -# individual recipient. Set this to true to enable VERPs on all personalized +# individual recipient. Set this to Yes to enable VERPs on all personalized # regular deliveries (personalized digests aren't supported yet). -VERP_PERSONALIZED_DELIVERIES = 0 +VERP_PERSONALIZED_DELIVERIES = No # And finally, we can VERP normal, non-personalized deliveries. However, # because it can be a significant performance hit, we allow you to decide how @@ -600,8 +611,8 @@ VERP_CONFIRM_FORMAT = '%(addr)s+%(cookie)s' # VERP_CONFIRM_FORMAT. VERP_CONFIRM_REGEXP = r'^(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$' -# Set this to true to enable VERP-like (more user friendly) confirmations -VERP_CONFIRMATIONS = 0 +# Set this to Yes to enable VERP-like (more user friendly) confirmations +VERP_CONFIRMATIONS = No # This is the maximum number of automatic responses sent to an address because # of -request messages or posting hold messages. This limit prevents response @@ -637,15 +648,17 @@ QRUNNERS = [ ('VirginRunner', 1), # internally crafted (virgin birth) messages ] -# Set this to true to use the `Maildir' delivery option. If you change this +# Set this to Yes to use the `Maildir' delivery option. If you change this # you will need to re-run bin/genaliases for MTAs that don't use list -# auto-detection. Also, the line after USE_MAILDIR to your mm_cfg.py file. +# auto-detection. # # WARNING: If you want to use Maildir delivery, you /must/ start Mailman's # qrunner as root, or you will get permission problems. # # NOTE: Maildir delivery is experimental for Mailman 2.1. -USE_MAILDIR = 0 +USE_MAILDIR = No +# NOTE: If you set USE_MAILDIR = Yes, add the following line to your mm_cfg.py +# file (uncommented of course!) # QRUNNERS.append(('MaildirRunner', 1)) # After processing every file in the qrunner's slice, how long should the @@ -657,9 +670,9 @@ QRUNNER_SLEEP_TIME = seconds(1) # When a message that is unparsable (by the email package) is received, what # should we do with it? The most common cause of unparsable messages is # broken MIME encapsulation, and the most common cause of that is viruses like -# Nimda. Set this variable to 0 to discard such messages, or to 1 to store +# Nimda. Set this variable to No to discard such messages, or to Yes to store # them in qfiles/bad subdirectory. -QRUNNER_SAVE_BAD_MESSAGES = 1 +QRUNNER_SAVE_BAD_MESSAGES = Yes @@ -673,18 +686,18 @@ QRUNNER_SAVE_BAD_MESSAGES = 1 DEFAULT_SERVER_LANGUAGE = 'en' # When allowing only members to post to a mailing list, how is the sender of -# the message determined? If this variable is set to 1, then first the +# the message determined? If this variable is set to Yes, then first the # message's envelope sender is used, with a fallback to the sender if there is -# no envelope sender. Set this variable to 0 to always use the sender. +# no envelope sender. Set this variable to No to always use the sender. # # The envelope sender is set by the SMTP delivery and is thus less easily # spoofed than the sender, which is typically just taken from the From: header # and thus easily spoofed by the end-user. However, sometimes the envelope # sender isn't set correctly and this will manifest itself by postings being # held for approval even if they appear to come from a list member. If you -# are having this problem, set this variable to 0, but understand that some +# are having this problem, set this variable to No, but understand that some # spoofed messages may get through. -USE_ENVELOPE_SENDER = 0 +USE_ENVELOPE_SENDER = No # Membership tests for posting purposes are usually performed by looking at a # set of headers, passing the test if any of their values match a member of @@ -702,24 +715,24 @@ DEFAULT_ADMIN_MEMBER_CHUNKSIZE = 30 # size (though this will slow down rendering those pages). ADMINDB_PAGE_TEXT_LIMIT = 4096 -# Set this variable to 1 to allow list owners to delete their own mailing +# Set this variable to Yes to allow list owners to delete their own mailing # lists. You may not want to give them this power, in which case, setting -# this variable to 0 instead requires list removal to be done by the site +# this variable to No instead requires list removal to be done by the site # administrator, via the command line script bin/rmlist. -OWNERS_CAN_DELETE_THEIR_OWN_LISTS = 0 +OWNERS_CAN_DELETE_THEIR_OWN_LISTS = No -# Set this variable to 1 to allow list owners to set the "personalized" flags -# on their mailing lists. Turning these on tells Mailman to send separate -# email messages to each user instead of batching them together for delivery -# to the MTA. This gives each member a more personalized message, but can -# have a heavy impact on the performance of your system. -OWNERS_CAN_ENABLE_PERSONALIZATION = 0 +# Set this variable to Yes to allow list owners to set the "personalized" +# flags on their mailing lists. Turning these on tells Mailman to send +# separate email messages to each user instead of batching them together for +# delivery to the MTA. This gives each member a more personalized message, +# but can have a heavy impact on the performance of your system. +OWNERS_CAN_ENABLE_PERSONALIZATION = No # Should held messages be saved on disk as Python pickles or as plain text? # The former is more efficient since we don't need to go through the # parse/generate roundtrip each time, but the latter might be preferred if you # want to edit the held message on disk. -HOLD_MESSAGES_AS_PICKLES = 1 +HOLD_MESSAGES_AS_PICKLES = Yes # These define the available types of external message metadata formats, and # the one to use by default. MARSHAL format uses Python's built-in marshal @@ -757,13 +770,15 @@ DEFAULT_NEW_MEMBER_OPTIONS = 256 ##### -# List defaults +# List defaults. NOTE: Changing these values does NOT change the +# configuration of an existing list. It only defines the default for new +# lists you subsequently create. ##### # Should a list, by default be advertised? What is the default maximum number # of explicit recipients allowed? What is the default maximum message size # allowed? -DEFAULT_LIST_ADVERTISED = 1 +DEFAULT_LIST_ADVERTISED = Yes DEFAULT_MAX_NUM_RECIPIENTS = 10 DEFAULT_MAX_MESSAGE_SIZE = 40 # KB @@ -782,17 +797,17 @@ DEFAULT_MAIL_COMMANDS_MAX_LINES = 25 # Is the list owner notified of admin requests immediately by mail, as well as # by daily pending-request reminder? -DEFAULT_ADMIN_IMMED_NOTIFY = 1 +DEFAULT_ADMIN_IMMED_NOTIFY = Yes # Is the list owner notified of subscribes/unsubscribes? -DEFAULT_ADMIN_NOTIFY_MCHANGES = 0 +DEFAULT_ADMIN_NOTIFY_MCHANGES = No # Should list members, by default, have their posts be moderated? -DEFAULT_DEFAULT_MEMBER_MODERATION = 0 +DEFAULT_DEFAULT_MEMBER_MODERATION = No # Should non-member posts which are auto-discarded also be forwarded to the # moderators? -DEFAULT_FORWARD_AUTO_DISCARDS = 1 +DEFAULT_FORWARD_AUTO_DISCARDS = Yes # What shold happen to non-member posts which are do not match explicit # non-member actions? @@ -804,31 +819,30 @@ DEFAULT_GENERIC_NONMEMBER_ACTION = 1 # Bounce if 'To:', 'Cc:', or 'Resent-To:' fields don't explicitly name list? # This is an anti-spam measure -DEFAULT_REQUIRE_EXPLICIT_DESTINATION = 1 +DEFAULT_REQUIRE_EXPLICIT_DESTINATION = Yes # Alternate names acceptable as explicit destinations for this list. DEFAULT_ACCEPTABLE_ALIASES =""" """ # For mailing lists that have only other mailing lists for members: -DEFAULT_UMBRELLA_LIST = 0 +DEFAULT_UMBRELLA_LIST = No # For umbrella lists, the suffix for the account part of address for # administrative notices (subscription confirmations, password reminders): DEFAULT_UMBRELLA_MEMBER_ADMIN_SUFFIX = "-owner" # This variable controls whether monthly password reminders are sent. -DEFAULT_SEND_REMINDERS = 1 +DEFAULT_SEND_REMINDERS = Yes -# Send welcome messages to new users? Probably should keep this set to 1. -DEFAULT_SEND_WELCOME_MSG = 1 +# Send welcome messages to new users? +DEFAULT_SEND_WELCOME_MSG = Yes -# Send goodbye messages to unsubscribed members? Probably should keep this -# set to 1. -DEFAULT_SEND_GOODBYE_MSG = 1 +# Send goodbye messages to unsubscribed members? +DEFAULT_SEND_GOODBYE_MSG = Yes # Wipe sender information, and make it look like the list-admin # address sends all messages -DEFAULT_ANONYMOUS_LIST = 0 +DEFAULT_ANONYMOUS_LIST = No # {header-name: regexp} spam filtering - we include some for example sake. DEFAULT_BOUNCE_MATCHING_HEADERS = """ @@ -850,9 +864,8 @@ from: .*@uplinkpro.com DEFAULT_REPLY_GOES_TO_LIST = 0 # Mailman can be configured to strip any existing Reply-To: header, or simply -# extend any existing Reply-To: with one based on the above setting. This is -# a boolean variable. -DEFAULT_FIRST_STRIP_REPLY_TO = 0 +# extend any existing Reply-To: with one based on the above setting. +DEFAULT_FIRST_STRIP_REPLY_TO = No # SUBSCRIBE POLICY # 0 - open list (only when ALLOW_OPEN_SUBSCRIBE is set to 1) ** @@ -864,8 +877,8 @@ DEFAULT_FIRST_STRIP_REPLY_TO = 0 # subscribes (next variable) DEFAULT_SUBSCRIBE_POLICY = 1 -# does this site allow completely unchecked subscriptions? -ALLOW_OPEN_SUBSCRIBE = 0 +# Does this site allow completely unchecked subscriptions? +ALLOW_OPEN_SUBSCRIBE = No # The default policy for unsubscriptions. 0 (unmoderated unsubscribes) is # highly recommended! @@ -878,22 +891,22 @@ DEFAULT_PRIVATE_ROSTER = 1 # When exposing members, make them unrecognizable as email addrs, so # web-spiders can't pick up addrs for spam purposes. -DEFAULT_OBSCURE_ADDRESSES = 1 +DEFAULT_OBSCURE_ADDRESSES = Yes # RFC 2369 defines List-* headers which are added to every message sent # through to the mailing list membership. These are a very useful aid to end # users and should always be added. However, not all MUAs are compliant and # if a list's membership has many such users, they may clamor for these -# headers to be suppressed. By setting this variable to 1, list owners will -# be given the option to suppress these headers. By setting it to 0, list +# headers to be suppressed. By setting this variable to Yes, list owners will +# be given the option to suppress these headers. By setting it to No, list # owners will not be given the option to suppress these headers (although some # header suppression may still take place, i.e. for announce-only lists, or # lists with no archives). -ALLOW_RFC2369_OVERRIDES = 1 +ALLOW_RFC2369_OVERRIDES = Yes # Defaults for content filtering on mailing lists. DEFAULT_FILTER_CONTENT is # a flag which if set to true, turns on content filtering. -DEFAULT_FILTER_CONTENT = 0 +DEFAULT_FILTER_CONTENT = No # DEFAULT_FILTER_MIME_TYPES is a list of MIME types to be removed. This is a # list of strings of the format "maintype/subtype" or simply "maintype". @@ -908,7 +921,7 @@ DEFAULT_PASS_MIME_TYPES = ['multipart/mixed', # Whether text/html should be converted to text/plain after content filtering # is performed. Conversion is done according to HTML_TO_PLAIN_TEXT_COMMAND -DEFAULT_CONVERT_HTML_TO_PLAINTEXT = 1 +DEFAULT_CONVERT_HTML_TO_PLAINTEXT = Yes # Default action to take on filtered messages. # 0 = Discard, 1 = Reject, 2 = Forward, 3 = Preserve @@ -916,29 +929,29 @@ DEFAULT_FILTER_ACTION = 0 # Whether to allow list owners to preserve content filtered messages to a # special queue on the disk. -OWNERS_CAN_PRESERVE_FILTERED_MESSAGES = 1 +OWNERS_CAN_PRESERVE_FILTERED_MESSAGES = Yes # Check for administrivia in messages sent to the main list? -DEFAULT_ADMINISTRIVIA = 1 +DEFAULT_ADMINISTRIVIA = Yes ##### -# Digestification defaults +# Digestification defaults. Same caveat applies here as with list defaults. ##### # Will list be available in non-digested form? -DEFAULT_NONDIGESTABLE = 1 +DEFAULT_NONDIGESTABLE = Yes # Will list be available in digested form? -DEFAULT_DIGESTABLE = 1 +DEFAULT_DIGESTABLE = Yes DEFAULT_DIGEST_HEADER = "" DEFAULT_DIGEST_FOOTER = DEFAULT_MSG_FOOTER -DEFAULT_DIGEST_IS_DEFAULT = 0 -DEFAULT_MIME_IS_DEFAULT_DIGEST = 0 +DEFAULT_DIGEST_IS_DEFAULT = No +DEFAULT_MIME_IS_DEFAULT_DIGEST = No DEFAULT_DIGEST_SIZE_THRESHHOLD = 30 # KB -DEFAULT_DIGEST_SEND_PERIODIC = 1 +DEFAULT_DIGEST_SEND_PERIODIC = Yes # Headers which should be kept in both RFC 1153 (plain) and MIME digests. RFC # 1153 also specifies these headers in this exact order, so order matters. @@ -961,11 +974,11 @@ PLAIN_DIGEST_KEEP_HEADERS = [ ##### -# Bounce processing defaults +# Bounce processing defaults. Same caveat applies here as with list defaults. ##### # Should we do any bounced mail response at all? -DEFAULT_BOUNCE_PROCESSING = 1 +DEFAULT_BOUNCE_PROCESSING = Yes # Bounce processing works like this: when a bounce from a member is received, # we look up the `bounce info' for this member. If there is no bounce info, @@ -1008,14 +1021,14 @@ DEFAULT_BOUNCE_YOU_ARE_DISABLED_WARNINGS_INTERVAL = days(7) # Does the list owner get messages to the -bounces (and -admin) address that # failed to match by the bounce detector? -DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER = 1 +DEFAULT_BOUNCE_UNRECOGNIZED_GOES_TO_LIST_OWNER = Yes # Notifications on bounce actions. The first specifies whether the list owner # should get a notification when a member is disabled due to bouncing, while # the second specifies whether the owner should get one when the member is # removed due to bouncing. -DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE = 1 -DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL = 1 +DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE = Yes +DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL = Yes @@ -1047,10 +1060,10 @@ DELIVERY_RETRY_WAIT = hours(1) # VARIABLES DEPENDING ON THE SIZE OF YOUR LISTS, THE PERFORMANCE OF YOUR # HARDWARE, NETWORK AND GENERAL MAIL HANDLING CAPABILITIES, ETC. -# Set this to true to turn on MailList object lock debugging messages, which +# Set this to On to turn on MailList object lock debugging messages, which # will be written to logs/locks. If you think you're having lock problems, or # just want to tune the locks for your system, turn on lock debugging. -LIST_LOCK_DEBUGGING = 0 +LIST_LOCK_DEBUGGING = Off # This variable specifies how long the lock will be retained for a specific # operation on a mailing list. Watch your logs/lock file and if you see a lot @@ -1065,11 +1078,11 @@ LIST_LOCK_LIFETIME = hours(5) # the message will be re-queued for later delivery. LIST_LOCK_TIMEOUT = seconds(10) -# Set this to true to turn on lock debugging messages for the pending requests +# Set this to On to turn on lock debugging messages for the pending requests # database, which will be written to logs/locks. If you think you're having # lock problems, or just want to tune the locks for your system, turn on lock # debugging. -PENDINGDB_LOCK_DEBUGGING = 0 +PENDINGDB_LOCK_DEBUGGING = Off # This variable specifies how long an attempt will be made to acquire a # pendingdb lock by the incoming qrunner process. If the lock acquisition @@ -1088,8 +1101,8 @@ PENDINGDB_LOCK_ATTEMPTS = 10 ##### # Nothing below here is user configurable. Most of these values are in this -# file for convenience. Don't change any of them or override any of them in -# your mm_cfg.py file! +# file for internal system convenience. Don't change any of them or override +# any of them in your mm_cfg.py file! ##### # These directories are used to find various important files in the Mailman @@ -1254,6 +1267,7 @@ add_language('ko', _('Korean'), 'euc-kr') add_language('lt', _('Lithuanian'), 'iso-8859-13') add_language('nl', _('Dutch'), 'iso-8859-1') add_language('no', _('Norwegian'), 'iso-8859-1') +add_language('pl', _('Polish'), 'iso-8859-2') add_language('pt', _('Portuguese'), 'iso-8859-1') add_language('pt_BR', _('Portuguese (Brazil)'), 'iso-8859-1') add_language('ru', _('Russian'), 'koi8-r') diff --git a/Mailman/Gui/NonDigest.py b/Mailman/Gui/NonDigest.py index 900f865f..b66c5c4f 100644 --- a/Mailman/Gui/NonDigest.py +++ b/Mailman/Gui/NonDigest.py @@ -1,17 +1,17 @@ -# Copyright (C) 2001,2002 by the Free Software Foundation, Inc. +# Copyright (C) 2001-2003 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 +# along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """GUI component for managing the non-digest delivery options. @@ -104,17 +104,35 @@ class NonDigest(GUIBase): # get a bogus warning if the header/footer contains a personalization # substitution variable, and we're transitioning from no # personalization to personalization enabled. + headfoot = Utils.maketext('headfoot.html', mlist=mlist, raw=1) + if mm_cfg.OWNERS_CAN_ENABLE_PERSONALIZATION: + extra = _("""\ +When <a href="?VARHELP=nondigest/personalize">personalization</a> is enabled +for this list, additional substitution variables are allowed in your headers +and footers: + +<ul><li><b>user_address</b> - The address of the user, + coerced to lower case. + <li><b>user_delivered_to</b> - The case-preserved address + that the user is subscribed with. + <li><b>user_password</b> - The user's password. + <li><b>user_name</b> - The user's full name. + <li><b>user_optionsurl</b> - The url to the user's option + page. +</ul> +""") + else: + extra = '' + info.extend([('msg_header', mm_cfg.Text, (10, WIDTH), 0, _('Header added to mail sent to regular list members'), _('''Text prepended to the top of every immediately-delivery - message. ''') + Utils.maketext('headfoot.html', - mlist=mlist, raw=1)), - + message. ''') + headfoot + extra), + ('msg_footer', mm_cfg.Text, (10, WIDTH), 0, _('Footer added to mail sent to regular list members'), _('''Text appended to the bottom of every immediately-delivery - message. ''') + Utils.maketext('headfoot.html', - mlist=mlist, raw=1)), + message. ''') + headfoot + extra), ]) return info diff --git a/Mailman/Handlers/SMTPDirect.py b/Mailman/Handlers/SMTPDirect.py index 4724c3a1..acaa77e2 100644 --- a/Mailman/Handlers/SMTPDirect.py +++ b/Mailman/Handlers/SMTPDirect.py @@ -50,7 +50,7 @@ DOT = '.' # Manage a connection to the SMTP server class Connection: def __init__(self): - self.__connect() + self.__conn = None def __connect(self): self.__conn = smtplib.SMTP() @@ -58,26 +58,32 @@ class Connection: self.__numsessions = mm_cfg.SMTP_MAX_SESSIONS_PER_CONNECTION def sendmail(self, envsender, recips, msgtext): + if self.__conn is None: + self.__connect() try: results = self.__conn.sendmail(envsender, recips, msgtext) except smtplib.SMTPException: - # For safety, reconnect - self.__conn.quit() - self.__connect() - # Let exceptions percolate up + # For safety, close this connection. The next send attempt will + # automatically re-open it. Pass the exception on up. + self.quit() raise - # Decrement the session counter, reconnecting if necessary + # This session has been successfully completed. self.__numsessions -= 1 # By testing exactly for equality to 0, we automatically handle the # case for SMTP_MAX_SESSIONS_PER_CONNECTION <= 0 meaning never close # the connection. We won't worry about wraparound <wink>. if self.__numsessions == 0: - self.__conn.quit() - self.__connect() + self.quit() return results def quit(self): - self.__conn.quit() + if self.__conn is None: + return + try: + self.__conn.quit() + except smtplib.SMTPException: + pass + self.__conn = None diff --git a/Mailman/Queue/Switchboard.py b/Mailman/Queue/Switchboard.py index 9a254039..77179fcf 100644 --- a/Mailman/Queue/Switchboard.py +++ b/Mailman/Queue/Switchboard.py @@ -72,8 +72,8 @@ class _Switchboard: self.__upper = None # BAW: test performance and end-cases of this algorithm if numslices <> 1: - self.__lower = (shamax * slice) / numslices - self.__upper = (shamax * (slice+1)) / numslices + self.__lower = ((shamax+1) * slice) / numslices + self.__upper = (((shamax+1) * (slice+1)) / numslices) - 1 def whichq(self): return self.__whichq @@ -139,7 +139,7 @@ class _Switchboard: # plain text. Second, the actual message file. However, we want to # first unlink the message file and then the .db file, because the # qrunner only cues off of the .db file - msg = data = None + msg = None try: data = self._ext_read(dbfile) os.unlink(dbfile) diff --git a/README-I18N.en b/README-I18N.en index b3efcd64..1f3c2432 100644 --- a/README-I18N.en +++ b/README-I18N.en @@ -132,33 +132,77 @@ DONATING YOUR TRANSLATION BACK TO MAILMAN CURRENT LIST OF LANGUAGE SUPPORTED OUT-OF-THE BOX - As of this writing (23-Dec-2002), Mailman 2.1 supports the - following languages out of the box: - - - Czech - - Chinese (Simplified and Traditional, but may have problems) - - Dutch - - English - - Estonian - - Finnish - - French - - German - - Hungarian - - Italian - - Japanese - - Korean - - Lithuanian - - Norwegian - - Portuguese (Brazil) - - Russian - - Spanish - - Swedish - - We've also had volunteers for these languages, although they - aren't yet integrated into the code base: - - - Catalan - - Polish + See http://www.list.org/i18n.html + + +MORE INSTRUCTIONS + + Here is the recipe that Simone Piunno used for the Italian + translations: + + "You can start without much technical knowledge, but if you want + to keep your translation up-to-date (while the development branch + evolves into the next stable release) you'd better learn how to + use cvs and diff. + + Here is my recipe. + + Basically, you'll start by copying templates/en/* to your sandbox dir + and then translating each file. Keep in mind that %(foo)s is a + variable reference (much like %s in C) and must be left untouched. + Also, you must be able to recognize a markup tag (eg, <foo>) because + they must be left untouched too, and you should know how to escape + non-ASCII characters, e.g. "è" -> "è", but only in html files. + Remember that if you need a literal % sign, it must be doubled: %% + + Next, you copy messages/mailman.pot, renaming it to serbian.po. + You can open this file with kbabel (a tool included in KDE SDK) and + translate each string (original on the higher half of the window, your + translation on the bottom half). + + If you are a masochist, you can even use emacs PO mode ;) + Keep attention to the same markers and escaping as above, with the added + complexity that here it's harder to say when a string is html (e.g. used + for web UI) or pure text (e.g used for email interface) + + Then you try to compile you .po file: + + msgfmt -v -o serbian.mo serbian.po + + No error messages should appear. + + Next, copy your files on an installed mailman tree, and run + bin/transcheck XX, where XX is your coutry code. + + No warning should appear (but maybe some warning is ok, if you really + know what you're doing). + + Now, try to run your translation (add an "add_language" line to + Mailman/Defaults.py) and check the many scattered pieces blend + together well. Sometimes you'll need some adjustment. + + When you're satistied, pack up a tar.gz with the following structure: + + messages/XX/LC_MESSAGES/mailman.po + messages/XX/LC_MESSAGES/mailman.mo + templates/XX/admindbdetails.html + templates/XX/admindbpreamble.html + . + . + templates/XX/userpass.txt + templates/XX/verify.txt + + (XX is your country code) and send it to Barry Warsaw. + + By that time, your translation could be somewhat obsolete, because + templates and mailman.pot could have been evolved meanwhile. + + Don't panic. + + You'll need to check diffs to find what changed and how, so that + you can easily update your files. + + Save everything everytime, you'll need it. MORE INSTRUCTIONS diff --git a/admin/www/admins.html b/admin/www/admins.html index 9309a4cb..ac3e9917 100644 --- a/admin/www/admins.html +++ b/admin/www/admins.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:37 2003 --> +<!-- Sat Apr 19 21:58:48 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/bugs.html b/admin/www/bugs.html index 8c174924..c3f9b15d 100644 --- a/admin/www/bugs.html +++ b/admin/www/bugs.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:31:20 2002 --> +<!-- Sat Apr 19 21:58:48 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -129,7 +132,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/devs.html b/admin/www/devs.html index 41d1eb3f..b5fc03bb 100644 --- a/admin/www/devs.html +++ b/admin/www/devs.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:21 2002 --> +<!-- Sat Apr 19 21:58:48 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -110,7 +110,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/docs.html b/admin/www/docs.html index 3c41e88c..add5b0db 100644 --- a/admin/www/docs.html +++ b/admin/www/docs.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:38 2003 --> +<!-- Sat Apr 19 21:58:48 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/download.html b/admin/www/download.html index 43bb5d8f..d9cc416b 100644 --- a/admin/www/download.html +++ b/admin/www/download.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:38 2003 --> +<!-- Sat Apr 19 21:58:49 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/faq.html b/admin/www/faq.html index 60c0ec7e..764b661a 100644 --- a/admin/www/faq.html +++ b/admin/www/faq.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:25 2002 --> +<!-- Sat Apr 19 21:58:55 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -116,7 +119,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/features.html b/admin/www/features.html index 878be8de..874f4867 100644 --- a/admin/www/features.html +++ b/admin/www/features.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:22 2002 --> +<!-- Sat Apr 19 21:58:49 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <b>Features</b> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -123,7 +126,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/help.html b/admin/www/help.html index e70186b2..274e55c7 100644 --- a/admin/www/help.html +++ b/admin/www/help.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:22 2002 --> +<!-- Sat Apr 19 21:58:49 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -130,7 +133,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/i18n.ht b/admin/www/i18n.ht index 2a8b09da..b1cade0d 100644 --- a/admin/www/i18n.ht +++ b/admin/www/i18n.ht @@ -48,7 +48,7 @@ Project</a> for future language support. <dl> <p><dt><b>Catalan</b></dt> - <dd><a href="mailto:jordi@debian.org">Jordi Mallach</a> is heading + <dd><a href="mailto:toni.panades@partal.com">Toni Panades</a> is heading up the Catalan translation effort. <p><dt><b>Chinese</b> Simplified (GB), and Big5</dt> @@ -128,14 +128,13 @@ Project</a> for future language support. </dd> <p><dt><b>Polish</b></dt> - <dd>Contrary to what you might think knowing my last name, I don't - know a word of Polish. :) Fortunately, + <dd>Polish translations have been contributed by + <a href="mailto:sawickib@iem.pw.edu.pl">Bartosz Sawicki</a> with + help from the rest of the translation team: <a href="mailto:Pawel.Kolodziejczyk@comarch.pl">Pawel Kolodziejczyk</a>, <a href="mailto:wanted@mwd.pl">Marcin Sochacki</a>, and - <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a> - have volunteered to spearhead the Polish - translations. + <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a>. <p><dt><b>Portuguese</b></dt> <dd>The following folks are working on the Portuguese diff --git a/admin/www/i18n.html b/admin/www/i18n.html index 56a9e131..7a5b3a2b 100644 --- a/admin/www/i18n.html +++ b/admin/www/i18n.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Sat Apr 19 00:45:21 2003 --> +<!-- Sat Apr 19 21:58:49 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -197,7 +197,7 @@ Project</a> for future language support. <dl> <p><dt><b>Catalan</b></dt> - <dd><a href="mailto:jordi@debian.org">Jordi Mallach</a> is heading + <dd><a href="mailto:toni.panades@partal.com">Toni Panades</a> is heading up the Catalan translation effort. <p><dt><b>Chinese</b> Simplified (GB), and Big5</dt> @@ -277,14 +277,13 @@ Project</a> for future language support. </dd> <p><dt><b>Polish</b></dt> - <dd>Contrary to what you might think knowing my last name, I don't - know a word of Polish. :) Fortunately, + <dd>Polish translations have been contributed by + <a href="mailto:sawickib@iem.pw.edu.pl">Bartosz Sawicki</a> with + help from the rest of the translation team: <a href="mailto:Pawel.Kolodziejczyk@comarch.pl">Pawel Kolodziejczyk</a>, <a href="mailto:wanted@mwd.pl">Marcin Sochacki</a>, and - <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a> - have volunteered to spearhead the Polish - translations. + <a href="mailto:m.zaborowski@il.pw.edu.pl">Marcin Zaborowski</a>. <p><dt><b>Portuguese</b></dt> <dd>The following folks are working on the Portuguese diff --git a/admin/www/index.html b/admin/www/index.html index 3d82f6db..482faadb 100644 --- a/admin/www/index.html +++ b/admin/www/index.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Sat Apr 19 20:55:58 2003 --> +<!-- Sat Apr 19 21:58:49 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/install.html b/admin/www/install.html index 7dc16e9c..f8ce0824 100644 --- a/admin/www/install.html +++ b/admin/www/install.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:38 2003 --> +<!-- Sat Apr 19 21:58:50 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/inthenews.html b/admin/www/inthenews.html index 27b33a7d..29ae8c4e 100644 --- a/admin/www/inthenews.html +++ b/admin/www/inthenews.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Tue Feb 4 00:20:07 2003 --> +<!-- Sat Apr 19 21:58:50 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <b>Mailman in Use</b> diff --git a/admin/www/jwzrebuttal.html b/admin/www/jwzrebuttal.html index 58236d26..f58d2f72 100644 --- a/admin/www/jwzrebuttal.html +++ b/admin/www/jwzrebuttal.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:39 2003 --> +<!-- Sat Apr 19 21:58:50 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/lists.html b/admin/www/lists.html index 998d7483..51261df6 100644 --- a/admin/www/lists.html +++ b/admin/www/lists.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:23 2002 --> +<!-- Sat Apr 19 21:58:50 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -116,7 +119,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/mgrs.html b/admin/www/mgrs.html index 37742b1e..e8f26abd 100644 --- a/admin/www/mgrs.html +++ b/admin/www/mgrs.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:23 2002 --> +<!-- Sat Apr 19 21:58:53 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -135,7 +138,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/mirrors.html b/admin/www/mirrors.html index 84c25eda..a7bc86e6 100644 --- a/admin/www/mirrors.html +++ b/admin/www/mirrors.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:23 2002 --> +<!-- Sat Apr 19 21:58:53 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -116,7 +119,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/otherstuff.html b/admin/www/otherstuff.html index 8c00a910..04c10a75 100644 --- a/admin/www/otherstuff.html +++ b/admin/www/otherstuff.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:39 2003 --> +<!-- Sat Apr 19 21:58:54 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/prev.html b/admin/www/prev.html index 1fa8d465..8a80c99f 100644 --- a/admin/www/prev.html +++ b/admin/www/prev.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Thu Dec 26 22:30:24 2002 --> +<!-- Sat Apr 19 21:58:54 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -80,7 +80,10 @@ Overview <a href="features.html">Features</a> </td></tr> <tr><td bgcolor="#eecfa1"> -<a href="otherstuff.html">Logos and Papers</a> +<a href="i18n.html">Internationalization</a> +</td></tr> +<tr><td bgcolor="#eecfa1"> +<a href="otherstuff.html">Rants, Papers, and Logos</a> </td></tr> <tr><td bgcolor="#eecfa1"> <a href="inthenews.html">Mailman in Use</a> @@ -116,7 +119,7 @@ Email Us </td></tr> <tr><td bgcolor="#eecfa1"> -© 1998-2002 +© 1998-2003 Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. diff --git a/admin/www/requirements.html b/admin/www/requirements.html index bc8b1877..d577fd8f 100644 --- a/admin/www/requirements.html +++ b/admin/www/requirements.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:39 2003 --> +<!-- Sat Apr 19 21:58:54 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/site.html b/admin/www/site.html index 09dab8c3..28157b2c 100644 --- a/admin/www/site.html +++ b/admin/www/site.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:39 2003 --> +<!-- Sat Apr 19 21:58:54 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/todo.ht b/admin/www/todo.ht index 2b3ef684..ed97d9e9 100644 --- a/admin/www/todo.ht +++ b/admin/www/todo.ht @@ -4,7 +4,7 @@ Title: The Mailman Wishlist <h3> The Mailman Wishlist </h3> <p> -<h3> (Last Update: $Date: 2003-03-31 22:01:24 +0100 (Mon, 31 Mar 2003) $) +<h3> (Last Update: $Date: 2003-04-20 05:02:13 +0100 (Sun, 20 Apr 2003) $) </h3> Here's the wish list for future versions of Mailman. Many new features have been added to Mailman 2.1, and it is currently diff --git a/admin/www/todo.html b/admin/www/todo.html index 0e6552c4..45a28d88 100644 --- a/admin/www/todo.html +++ b/admin/www/todo.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Sat Apr 19 20:55:59 2003 --> +<!-- Sat Apr 19 21:58:55 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: @@ -135,7 +135,7 @@ entire article is permitted in any medium, provided this notice is preserved. <h3> The Mailman Wishlist </h3> <p> -<h3> (Last Update: $Date: 2003-04-20 01:56:02 +0100 (Sun, 20 Apr 2003) $) +<h3> (Last Update: $Date: 2003-04-20 05:02:13 +0100 (Sun, 20 Apr 2003) $) </h3> Here's the wish list for future versions of Mailman. Many new features have been added to Mailman 2.1, and it is currently diff --git a/admin/www/users.html b/admin/www/users.html index f5eafc75..eb4689e1 100644 --- a/admin/www/users.html +++ b/admin/www/users.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Mon Mar 31 16:00:40 2003 --> +<!-- Sat Apr 19 21:58:54 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/admin/www/version.html b/admin/www/version.html index b2ed8555..4f45c5b4 100644 --- a/admin/www/version.html +++ b/admin/www/version.html @@ -1,7 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <!-- THIS PAGE IS AUTOMATICALLY GENERATED. DO NOT EDIT. --> -<!-- Sat Apr 19 20:55:59 2003 --> +<!-- Sat Apr 19 21:58:55 2003 --> <!-- USING HT2HTML 2.0 --> <!-- SEE http://ht2html.sf.net --> <!-- User-specified headers: diff --git a/bin/add_members b/bin/add_members index 92b3ca04..1e50b941 100755 --- a/bin/add_members +++ b/bin/add_members @@ -41,11 +41,6 @@ Options: -d file Similar to above, but these people become digest members. - --changes-msg=<y|n> - -c <y|n> - Set whether or not to send the list members the `there's going to be - big changes to your list' message. defaults to no. - --welcome-msg=<y|n> -w <y|n> Set whether or not to send the list members a welcome message, @@ -116,31 +111,6 @@ def readfile(filename): -def SendExplanation(mlist, users): - listname = mlist.real_name - listhost = mlist.host_name - d = {'listname' : listname, - 'listhost' : listhost, - 'listaddr' : mlist.GetListEmail(), - 'listinfo_url': mlist.GetScriptURL('listinfo', absolute=1), - 'requestaddr' : mlist.GetRequestEmail(), - 'adminaddr' : mlist.GetOwnerEmail(), - 'version' : mm_cfg.VERSION, - } - otrans = i18n.get_translation() - i18n.set_language(mlist.preferred_language) - try: - text = Utils.maketext('convert.txt', d) - subject = _('Big change in %(listname)s@%(listhost)s mailing list') - msg = Message.UserNotification(users, mlist.GetBouncesEmail(), - subject, text, - mlist.preferred_language) - finally: - i18n.set_translation(otrans) - msg.send(mlist) - - - class Tee: def __init__(self, outfp): self.__outfp = outfp @@ -180,12 +150,11 @@ def addall(mlist, members, digest, ack, outfp): def main(): try: opts, args = getopt.getopt(sys.argv[1:], - 'a:n:r:d:c:w:h', + 'a:n:r:d:w:h', ['admin-notify=', 'regular-members-file=', 'non-digest-members-file=', 'digest-members-file=', - 'changes-msg=', 'welcome-msg=', 'help']) except getopt.error, msg: @@ -197,7 +166,6 @@ def main(): listname = args[0].lower().strip() nfile = None dfile = None - send_changes_msg = 0 send_welcome_msg = None admin_notif = None for opt, arg in opts: @@ -214,13 +182,6 @@ def main(): # I don't think we need to use the warnings module here. print >> sys.stderr, 'option', opt, \ 'is deprecated, use -r/--regular-members-file' - elif opt in ('-c', '--changes-msg'): - if arg.lower()[0] == 'y': - send_changes_msg = 1 - elif arg.lower()[0] == 'n': - send_changes_msg = 0 - else: - usage(1, _('Bad argument to -c/--changes-msg: %(arg)s')) elif opt in ('-w', '--welcome-msg'): if arg.lower()[0] == 'y': send_welcome_msg = 1 @@ -284,9 +245,6 @@ def main(): mlist.preferred_language) msg.send(mlist) - if send_changes_msg: - SendExplanation(mlist, nmembers + dmembers) - mlist.Save() finally: mlist.Unlock() @@ -1,19 +1,19 @@ #! @PYTHON@ # -# Copyright (C) 1998,1999,2000,2001,2002 by the Free Software Foundation, Inc. +# Copyright (C) 1998-2003 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 +# along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """Remove the components of a mailing list with impunity - beware! @@ -47,6 +47,12 @@ from Mailman import Utils from Mailman import MailList from Mailman.i18n import _ +try: + True, False +except NameError: + True = 1 + False = 0 + def usage(code, msg=''): @@ -61,15 +67,17 @@ def usage(code, msg=''): -def remove_it(listname, dir, msg): - if os.path.islink(dir): +def remove_it(listname, filename, msg): + if os.path.islink(filename): print _('Removing %(msg)s') - os.unlink(dir) - elif os.path.isdir(dir): + os.unlink(filename) + elif os.path.isdir(filename): print _('Removing %(msg)s') - shutil.rmtree(dir) + shutil.rmtree(filename) + elif os.path.isfile(filename): + os.unlink(filename) else: - print _('%(listname)s %(msg)s not found as %(dir)s') + print _('%(listname)s %(msg)s not found as %(filename)s') @@ -84,18 +92,18 @@ def main(): usage(1) listname = args[0].lower().strip() - removeArchives = 0 + removeArchives = False for opt, arg in opts: if opt in ('-a', '--archives'): - removeArchives = 1 + removeArchives = True elif opt in ('-h', '--help'): usage(0) if not Utils.list_exists(listname): - if not removeArchives: - usage(1, _('No such list (or list already deleted): %(listname)s')) - else: - print _( + if not removeArchives: + usage(1, _('No such list (or list already deleted): %(listname)s')) + else: + print _( 'No such list: %(listname)s. Removing its residual archives.') if not removeArchives: @@ -104,27 +112,34 @@ def main(): REMOVABLES = [] if Utils.list_exists(listname): - mlist = MailList.MailList(listname, lock=0) + mlist = MailList.MailList(listname, lock=0) - # Do the MTA-specific list deletion tasks - if mm_cfg.MTA: - modname = 'Mailman.MTA.' + mm_cfg.MTA - __import__(modname) - sys.modules[modname].remove(mlist) + # Do the MTA-specific list deletion tasks + if mm_cfg.MTA: + modname = 'Mailman.MTA.' + mm_cfg.MTA + __import__(modname) + sys.modules[modname].remove(mlist) - REMOVABLES = [ - (os.path.join('lists', listname), _('list info')), + REMOVABLES = [ + (os.path.join('lists', listname), _('list info')), ] + # Remove any stale locks associated with the list + for filename in os.listdir(mm_cfg.LOCK_DIR): + fn_listname = filename.split('.')[0] + if fn_listname == listname: + REMOVABLES.append((os.path.join(mm_cfg.LOCK_DIR, filename), + _('stale lock file'))) + if removeArchives: REMOVABLES.extend([ - (os.path.join('archives', 'private', listname), + (os.path.join('archives', 'private', listname), _('private archives')), - (os.path.join('archives', 'private', listname + '.mbox'), + (os.path.join('archives', 'private', listname + '.mbox'), _('private archives')), - (os.path.join('archives', 'public', listname), + (os.path.join('archives', 'public', listname), _('public archives')), - (os.path.join('archives', 'public', listname + '.mbox'), + (os.path.join('archives', 'public', listname + '.mbox'), _('public archives')), ]) diff --git a/cron/checkdbs b/cron/checkdbs index ae194970..39b12095 100755 --- a/cron/checkdbs +++ b/cron/checkdbs @@ -140,6 +140,7 @@ def pending_requests(mlist): info = mlist.GetRecord(id) when, sender, subject, reason, text, msgdata = mlist.GetRecord(id) date = time.ctime(when) + reason = _(reason) pending.append(_("""\ From: %(sender)s on %(date)s Subject: %(subject)s |