| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| |
|
|
| |
module.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
process(): Also, use the MembershipAdaptor API for calculating the
recipients of an urgent message.
|
| |
|
|
|
|
| |
process(): Fixed buglet so that if there is no Subject: header in the
original message, "(no subject)" -- properly i18nified -- will be
used instead of "None".
|
| |
|
|
| |
supported.
|
| |
|
|
|
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
admindb.py: Use ListAdmin.readMessage() to actually read the contents
of the message from disk.
|
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| |
|
|
| |
module. Also, we don't need the string module.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
InitTempVars(): Don't set __filename here, since InitTempVars() is
never called when the list is Create()'d (which may itself be a
buglet).
__filename(), __opendb(), __closedb(): New method to return the
request.db absolute path on the fly. Use this in __opendb() and
__closedb().
HoldMessage(): Store the message as a pickle instead of generating the
plain text representation. This should be faster than reparsing
on input.
readMessage(): New function that will read either pickle or plain text
held messages, depending on the file extension. This helps with
backwards compatibility.
|
| | |
|
| | |
|
| |
|
|
| |
Reported by Luca Maranzano.
|
| |
|
|
| |
translation.
|
| | |
|
| |
|
|
| |
Mentor Cana and Michael Totschnig.
|
| |
|
|
|
|
|
| |
more informative message to logs/vette (one that includes the
Message-ID: of the original message). Also, include an
X-Moderated: header which lets recipients know when -- and by
whom -- the message was approved.
|
| |
|
|
|
|
| |
just short-circuit returns. We need to do this after moving the
Save() into the try clause (which may turn out to not be the right
thing to do...)
|
| |
|
|
|
| |
confirm string construction to not use %(cookie)s -- unnecessary
since de-i18n-ifying these strings. Found by Mikhail Sobolev.
|
| |
|
|
|
|
|
|
|
|
| |
the class, already i18n-ified.
MessageTooBig.reason_notice(): Add this instead of setting a reason
attribute, so that the proper i18n interpolation can occur.
hold_for_approval(): Don't i18n-ify rejection-notice and don't
str()-ify the reason string. Just send both through Utils.wrap().
|
| |
|
|
|
|
|
|
|
| |
many problem due to docstring non-extraction in pygettext). Now
the attribute `reason' is used as the reason instead of the
docstring, and reason_notice() is the called interface. This
mirrors exactly how rejection notices are done.
HoldMessage.__str__(): Removed.
|
| | |
|
| |
|
|
|
|
| |
subject text, which contains the robot command "confirm" should
not be translated, otherwise MailCommandHandler will break.
Reported by Daniel Buchmann.
|
| | |
|
| |
|
|
|
|
| |
to stop processing immediately. This in effect provides for the
recognition of temporary problem bounce messages which shouldn't
RegisterBounce(), but /should/ discard the message.
|
| | |
|
| |
|
|
|
|
|
|
| |
TypeError, but only ValueError was being caught. This means stray
%'s can still crash Mailman.
Also, when interpolation fails, instead of using [INVALID FOOTER],
return the raw footer text template.
|
| |
|
|
| |
options. Caught by Ben Gertzfield.
|
| | |
|
| |
|
|
|
|
|
| |
mailto: to their personal email address. Instead, hyperlink the
lot of them with a mailto: to the list's -owner address. That
let's us do a spam detect on the message before forwarding on the
owners.
|
| | |
|
| |
|
|
|
|
|
| |
be properly configured in mm_cfg.py.
process(): Don't support the header == None semantics (it was broken
anyway). We may have to add this back later.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
_toadmins(): Run the message through SpamDetect to filter out known
spam patterns in messages to the list owners/moderators. Log such
detected spam to logs/spam and discard the message.
Also, for every message to a list's -owner or -admin address, we
always send it on to the list owners and moderators, even though
the moderators can't access the admin pages (only the admindb
pages).
Note 1: this makes the `tomoderators' key in the message metadata
obsolete.
Note 2: this may not be the Right Thing To Do.
|
| |
|
|
| |
_doperiodic().
|
| |
|
|
|
|
|
| |
allow deletion of list by anybody with a valid cookie
authentication. We /want/ to force the admin to enter the
password explicitly, as an extra confirmation step, so use
Authenticate() instead.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
host_name attributes based on the calculated values.
web_page_url's host name comes from get_domain() interpolated into
DEFAULT_URL_PATTERN, while host_name comes from a lookup in the
VIRTUAL_HOSTS table, defaulting to get_domain() if not found.
Also, we're now responsible for saving the list, and once we've
done so, we can unlock it and do the rest of the task (which
doesn't require the lock, so can be done outside the
try/finally).
|
| |
|
|
|
|
|
|
|
| |
DEFAULT_HOST_NAME to get the hostname.
Also, do the same kind of virtual host filtering for the admin
overview as we do in the listinfo overview. This more clearly
separates the virtual domains (there perhaps should be a site
overview).
|
| |
|
|
|
|
|
|
|
|
| |
DEFAULT_URL_PATTERN and interpolate in the calculated web-request
based host name (via get_domain()). This should improve vhost
support.
get_site_email(): Calculate hostname by looking up get_domain()
results in VIRTUAL_HOSTS, defaulting to get_domain() if no vhost
information was set.
|
| |
|
|
|
|
|
| |
I.e. don't catch and transform OSErrors to MMUnknownListErrors.
Also, don't do a Save() here. The caller is now responsible for
saving the list.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
VIRTUAL_HOSTS is a dictionary mapping url base hostnames to email base
hostnames. E.g. "mail.python.org" -> "python.org". When a new list
is created, we attempt to ascertain the web host from the web request.
We use that for web_page_url and then we look it up in VIRTUAL_HOSTS
to find host_name. If not found, we use the same host for
web_page_url and host_name.
DEAFULT_EMAIL_HOST is now the preferred way to specify the default
email host_name. It is set by configure to @FQDN@.
DEFAULT_URL_HOST is now the preferred way to specify the default host
for web_page_url. It is set by configure to @URL@.
DEFAULT_URL_PATTERN is how to convert DEFAULT_URL_HOST to
web_page_url. It must contain a single %s expansion.
For backwards compatibility, DEFAULT_HOST_NAME = DEFAULT_EMAIL_HOST
and DEFAULT_URL = DEFAULT_URL_PATTERN % DEFAULT_URL_HOST.
Also, added another commented out MAILMAN_URL mirror.
|
| |
|
|
| |
to point at the recipient instead of the list.
|
| |
|
|
| |
header munging.
|
| |
|
|
| |
multiline individual strings.
|
| |
|
|
| |
respond_to_post_requests
|
| |
|
|
|
| |
"administrator". Add a VARHELP link to member_posting_only when
describing "Restrict..." in the posters option
|
| |
|
|
|
|
|
|
|
|
| |
general#passwords section, and to the `moderator' option where
appropriate.
Likewise for `moderator' option.
Also, dont_respond_to_post_requests => respond_to_post_requests
and switch the polarity of the No/Yes radio.
|
| |
|
|
|
|
|
| |
this is ugly, but it makes the job much easier for translators of
certain languages.
Also say "list moderator" instead of "list administrator".
|