| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
possible.
|
| |
|
|
|
|
| |
EnvironmentError, it makes for slightly cleaner and more efficient
code to catch the common base class rather than a tuple containing the
two derived classes.
|
| |
|
|
|
| |
language, also pass in the MailList object; maketext() digs the
preferred language out of the list object.
|
| |
|
|
|
| |
language, also pass in the MailList object; maketext() digs the
preferred language out of the list object.
|
| |
|
|
|
| |
also pass in the MailList object; maketext() digs the preferred
language out of the list object.
|
| |
|
|
|
| |
pass in the MailList object; maketext() digs the preferred language
out of the list object.
|
| |
|
|
|
|
|
|
|
|
| |
has been removed.
FormatHTML(): Call Utils.maketext() instead of SnarfHTMLTemplate()
since that's also been removed.
ChangeHTML(): Don't use mlist._template_dir to find the path to the
list-centric template. Instead use mlist.fullpath().
|
| |
|
|
|
|
|
|
|
| |
pass in the MailList object; maketext() digs the preferred language
out of the list object.
Also, use mm_cfg.MAILMAN_OWNER as the originator of the mail message
instead of `mailman-owner@' + mlist.host_name. This closes SF bug
#424389, although I'm not 100% sure this is the right fix.
|
| |
|
|
|
| |
simply pass in the MailList object; maketext() digs the preferred
language out of the list object.
|
| |
|
|
|
| |
simple pass in self; maketext() digs the preferred language out of the
list object.
|
| |
|
|
|
|
|
|
|
|
|
| |
language to the value of $LANGUAGE (or any of the other gettext module
supported environment variables). Specifically,
set_language(): Allow the `language' parameter to default to None,
which tells gettext.translation() to use its own defaults.
When the module global _translation is None, call set_language() with
no arguments.
|
| |
|
|
|
|
|
|
|
|
| |
ApprovedAddMember(), DeleteMember():
Instead of passing in the list's preferred language, simple pass in
self; maketext() digs the preferred language out of the list object.
In AddMember(), ConfirmUnsubscription(), and ApprovedAddMember(), the
argument `lang' is also passed in case the user chose a language other
than the list's default.
|
| |
|
|
|
| |
preferred language, simple pass in self; maketext() digs the preferred
language out of the list object.
|
| |
|
|
|
|
| |
EnvironmentError, it makes for slightly cleaner and more efficient
code to catch the common base class rather than a tuple containing the
two derived classes.
|
| |
|
|
|
| |
preferred language, simple pass in self; maketext() digs the preferred
language out of the list object.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and all references to this volatile instance variable have been
removed.
SnarfHTMLTemplate(): Also removed, since maketext() does all this in a
more general way.
ParseTags(): Use Utils.maketext() instead of SnarfHTMLTemplate().
InitTemplates(): Because of the new support for expanded template
searches, the only thing that's necessary for a list to support a
language is for it to have a (possibly empty) directory named after
the language code. Thus, the copying of template files done in this
method are unnecessary.
|
| |
|
|
|
|
|
|
| |
simple pass in self; maketext() digs the preferred language out of the
list object.
SetUserDigest(): Add a note about the (possibly) redundant self.Save()
call.
|
| |
|
|
|
|
|
|
| |
user's preferred language, also pass in self so maketext() can dig out
the list's preferred language if for some odd reason the user's
preferred language can't be found.
Also, remove the obsolete os.environ['LANG'] setting.
|
| |
|
|
|
| |
language, simple pass in self; maketext() digs the preferred language
out of the list object.
|
| |
|
|
| |
os.mkdir() instead of Utils.mkdir().
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
function now takes an additional optional argument `mlist' which must
be a MailList object. It implements an expanding search order for a
specific template file: list-centric, domain-centric, site-centric,
global default. Each of these prefixes in turn the explicit language
passed as an argument, then the list's preferred language, then the
site's default language. The first matching template file found is
returned.
mkdir(): Removed. Use os.mkdir() instead.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
script was not setting up the i18n environment in the `blessed' way.
|
| |
|
|
|
| |
Kikuchi. Japanese translations have difficulty when the sentences are
split.
|
| |
|
|
|
| |
Tokio Kikuchi. Japanese translations have difficulty when the
sentences are split.
|
| |
|
|
|
| |
misconfigured in mm_cfg.py to be missing a trailing slash, one will be
added upon list creation.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
displayed:
- use the private.html template instead of private.txt
- calculate the ACTION attribute via the absolute url back to the
`private' cgi script
|
| |
|
|
|
| |
PRIVATE_ARCHIVE_URL, calculate the url to the `private' cgi script via
self.GetScriptURL().
|
| | |
|
| | |
|
| |
|
|
| |
highly annoying to have to tail more than one log file to find bugs.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
only if it has no prior value), is encoded into the file name so that
we can guarantee FIFO order on the processed files. We can't encode
the received time in the file attributes because there isn't enough
precision (and I suspect that stat'ing all those files will be too
much of a disk I/O drain).
Instead, the filebase is composed of the string representation of the
current time in float seconds, the symbol `+', and the SHA1 hexdigest
of a hash of the uniquifying data. This makes it easy and quick to
decode received time for FIFO sorting, but retains the "random" digest
for bitrange slicing. Note that the received_time metadata value is
never changed once its set so the first part of the filebase will
remain unchanged as it moves between queues (while the hexdigest will
almost definitely change on each queue move).
dequeue(): Be more robust about missing .msg or .db files when the
other exists (usually, it'll be the .msg file that's missing). Return
None for either the msg or data part of the 2-tuple return value,
where None means "missing".
files(): Utililize the new file naming convention to break apart the
file name and sort the files in FIFO order, while still retaining the
bitrange random hash feature.
MarshalSwitchboard: All Python versions up to and including Python 2.1
have a bug in the marshal representation of binary floating point
numbers. Specifically, it loses precision that Mailman requires. The
solution in this class is to have a hardcoded list of known float
attributes, convert them to strings via repr() before marshaling the
dictionary, and convert them back to floats -- via a safe eval() --
when reading the marshal back from file.
|
| |
|
|
| |
queue runner.
|
| |
|
|
|
|
|
|
|
|
| |
assume that the list of files coming back from Switchboard.files() is
sorted by received time, so we don't need to randomize this list.
Also, it's now possible for Switchboard.dequeue() to return None for
either or both of msg and msgdata (say if the .msg file for a .db file
got lost somehow). Check that both are not None before proceeding
(but if either is None, log an error).
|
| |
|
|
| |
since this is guaranteed to be filled in by the runner.
|
| |
|
|
|
| |
the os.waitpid() call. This means there are no children left so we
can just clear the dictionary and return.
|
| |
|
|
| |
them to plain text first.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
mail scripts simply add metadata `tojoin' or `toleave' respectively,
which tell CommandRunner which operation to perform.
This is a bit crufty since MailCommandHandler.ParseMailCommands()
still handles the actual job of adding or deleting the member.
CommandRunner hacks the Subject: line of the message to add just the
specific desired command, and it empties the message's payload
(effectively ignoring any additional commands or useless text in the
email message).
|