| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
| |
ParseMailCommand(), ProcessSubscribeCmd(), AddApprovalMsg(),
ProcessHelpCmd(): For human consumption, we should point people at the
-owner address as the contact address, but when sending the message
out, it should come from the -bounces address for bounce processing.
|
| |
|
|
| |
to dig the full name out of the From: header.
|
| |
|
|
|
|
|
|
|
|
| |
written by Ben Gertzfield, ported to MM2.1 by Marc MERLIN.
Specifically,
NODUPES: Description of the nodupes option.
option_desc, option_info, options: Add nodupes.
|
| |
|
|
|
|
|
| |
__dispatch table in the constructor, as this creates some circular
references that are unnecessary most of the time. Only when
ParseMailCommands() is run and the dispatch table is empty do we
create the table. This should only happen in the CommandRunner.
|
| |
|
|
|
|
|
| |
object, pass in the language that the message should be in. This
allows us to get the character set and header encodings right.
Patch by Ben Gertzfield, with modifications by Barry.
|
| |
|
|
| |
responsemsg wasn't getting the MIME-Version: header set.
|
| |
|
|
|
| |
calling AddMember(). This exception is raised when the subscribing
address is banned.
|
| |
|
|
|
|
|
|
| |
getMemberOption(). Also, tailor the disable notification based on the
actual status -- gives more detail about how the membership was
actually disabled.
ProcessSetCmd(): Set delivery status by setDeliveryStatus().
|
| |
|
|
| |
the thing we muck about with is a concrete list object.
|
| |
|
|
|
| |
In Python 2.2, email 1.0, body_line_iterator() returns a generator,
which has no insert() method, so be sure to turn it into a list.
|
| |
|
|
|
|
| |
the i18n string interpolation. Also, rewrite the MMBadConfirmation
message, since they may be confirming something other than a
subscription request.
|
| |
|
|
|
| |
unsubscribe_policy is true (i.e. admin must approve). This calls
DeleteMember() instead of ApprovedDeleteMember().
|
| |
|
|
|
| |
ApprovedDeleteMember() so that the request can go through admin
approval if required.
|
| |
|
|
| |
the second argument to ProcessConfirmation().
|
| | |
|
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| |
|
|
|
|
|
| |
this is ugly, but it makes the job much easier for translators of
certain languages.
Also, consistancy for strings which have similar messages.
|
| |
|
|
|
|
| |
UserDesc constructor. Previously, we were assigning the password
to the fullname, and the digest to the password, so users were
ending up with a password of the integer 0. Very bogus.
|
| |
|
|
|
|
|
|
| |
GetPreferredLanguage() -> getMemberLanguage()
ProcessSubscribeCmd(): Update for new AddMember() signature (requires
a UserDesc instance). This still needs to be fixed so that the
real name is extracted from the From: line.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
API instead, e.g.
IsMember() -> isMember()
self.passwords.* -> getMemberPassword()
ConfirmUserPassword() -> [do the comparison ourselves]
ChangeUserPassword() -> setMemberPassword()
GetUserOption() -> getMemberOption()
GetDigestMembers() -> getDigestMemberKeys()
GetMembers() -> getRegularMemberKeys()
DeleteMember() -> ApprovedDeleteMember()
option_info: Make order agree w/ option_desc.
ProcessPasswordCmd(): Fix the response string so that it isn't broken
on two lines. Remove unnecessary exception handlers.
be raised.
ProcessOptionsCmd(), ProcessSetCmd(), ProcessUnsubscribeCmd(): Rewrite
and simply to use the new membership API. Remove unnecessary
exception handlers.
ProcessSetCommand(): Split usage printing into __setcmd_usage()
method.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AddToResponse(): Use augmented assignment where appropriate.
ParseMailCommands(): Set the __noresponse flag to 0 at the top of this
method, so there's no chance that a previously handled command will
mess up sending a response to this command.
ProcessConfirmCmd(): Save the results from ProcessConfirmation() and
check the operation in the first element. If it's a
Pending.SUBSCRIPTION and the mailing list already sends out welcome
messages, then don't send a "succeed" confirmation ourselves.
Also, in the big except clause, catch MMNoSuchUserError which can
happen if the user has made two unsub requests and confirmed them both
(the second will trigger the exception). Do something more sensible
than letting the exception trickle all the way back up. ;)
|
| |
|
|
| |
'option_descs' -> 'option_desc', as that is what the global is named.
|
| |
|
|
| |
Also, syslog messages should not be marked as translatable.
|
| |
|
|
|
| |
preferred language, simple pass in self; maketext() digs the preferred
language out of the list object.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
"leave" are synonyms for "unsubscribe".
ProcessUnsubscribeCmd(): It is now legal to omit both the password and
email address when unsubscribing via the -request address. If the
password is omitted, a removal confirmation message is generated.
However if the password was given, it must match the user's password
or the removal fails. If the password matches, the removal is
performed immediately.
Note that there's an ambiguity if exactly one argument is given: is it
a password or an email address? Use FindUser() to decide giving
preference to email address.
|
| |
|
|
|
| |
number. Also, rewrite slightly the error message string, and other
messages.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specifically:
ParseMailCommands(): Use a mimelib MsgReader idiom to get just the
body of the message, sans headers. This could be made easier with
Python 2.1's xreadlines module or a better interface on Message
objects.
Substitute one crufty parsing of the Subject: line for another.
Actually now, any command can appear anywhere on the Subject: line,
and confirmation messages are just another form of that (by changing
the Subject: text from "request" to "confirm" -- same as the body
command).
Fixed typos in language support (mlist -> self).
Rewrite the "errors-in-command" string so that the substitution keys
are actually the correct ones!
AddError(): Python 2.0-isms.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
ParseMailCommands(): add an extra argument `msgdata' since it's
convenient to have access to the message's metadata.
Mark some more strings as translatable.
Make sure messages getting sent back to the user have the proper
Content-Type: based on the language context.
msg.GetSender() -> msg.get_sender()
Close SF bug #405131, submitted by Chris Ryan.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Better formatting of command descriptions.
_ function should come from Mailman.i18n not from gettext.
ParseMailCommands(): Convert to using mimelib interface.
Fix the Utils.maketext() calls to pass the language in as a keyword
argument.
Fix some _() wrappings to use local variables.
|
| |
|
|
|
|
|
|
|
|
| |
References to HandlerAPI module removed.
Use new mimelib and switchboard interfaces.
Use other Python 2.0 features as appropriate.
NOTE: This whole module really needs a good rewrite.
|
| |
|
|
|
|
| |
Mark various strings as translatable.
ParseMailCommands(): Set $LANG to the user's preferred language.
|
| | |
|
| |
|
|
| |
GetScriptURL(..., absolute=1)
|
| |
|
|
| |
hard-coded list (see change in qrunner).
|
| | |
|
| |
|
|
|
|
|
|
| |
slightly bogus -- see the TBD comments in the code.
ProcessUnsubscribeCmd(): Catch MMBadUserError which can happen when
the user has a None entry in mlist.passwords (how can that happen?
legacy code?)
|
| | |
|
| |
|
|
|
| |
list admin contact address, instead of trusting the MMNeedApproval
exception to have been raised with the correct address as argument.
|
| |
|
|
| |
ProcessSubscribeCmd(): MMListNotReady => MMListNotReadError
|
| | |
|
| | |
|
| |
|
|
|
| |
header or a List-ID header. This should break most common listserv
infloops, and addresses PR#206.
|
| |
|
|
|
|
| |
If autorespond_requests is turned on, then send the original message
through the Replybot.process()'ing. Here's where we handle whether to
"reply and discard" or "reply and forward".
|
| |
|
|
| |
by scripts/mailcmd
|
| |
|
|
| |
bug
|
| |
|
|
| |
Some rewording of the notification messages.
|
| | |
|