| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
membership_options(): We have to urllib.quote() the value attribute on
the hidden input tag, otherwise it is impossible to unsubscribe
addresses with quotes in them (which are valid RFC822 addresses).
change_options(): Be sure to urllib.unquote() the user value field,
undoing the effects of membership_options() and allowing
unsubscription of addresses with quotes in them.
|
|
i18n.set_language() and doc.set_language() to set up the proper
language for the response page.
Also, consistency with other CGI scripts in their use of
"from Mailman.htmlformater import *".
De-string-module-ification.
Other random code cleaning.
|
|
former does the proper urllib.quote()'ing of the email address.
Close SF bug #214161 (old Jitterbug PR#198).
|
|
|
|
|
|
|
|
Fix for SF bug #229794.
|
|
someone who is already on the list. Since the person was added between the
subscription request and the approval, just drop the request.
|
|
|
|
su/crontab only if not.
|
|
Also, comment out `web_page_url' -- it's probably just too dangerous
to allow list admins to change this via the web. Making a mistake
breaks the list (for the rare situation where the base url needs
changing, it's up to the site admin to effect).
|
|
John Aughey.
|
|
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.
|
|
Close SF bug #405131, submitted by Chris Ryan.
|
|
|
|
send_digests() -> send_i18n_digests(): this does the bulk of the
digest crafting, but it's wrapped in send_digests() which first sets
up the language context for the digest (the list's preferred
language).
send_i18n_digests(): Also make sure that for text/plain parts, the
charset is set correctly to the list's preferred language character
set.
Mark more strings as translatable.
|
|
|
|
We have to play module global footsie with _() so that the rejection
notices are marked as translatable, but aren't actually translated
until later.
Administrivia.rejection_notice(), MessageTooBig.rejection_notice():
Convert to interpolating local variables.
hold_for_approval(): Conversion to the new way of i18n'ing. The
language context at this point is the user's preferred language, so we
craft his notification first before temporarily changing contexts to
the list's preferred (for the admin). We no longer need to duplicate
the code as was done before, but some things need to be re-translated
in the context of the list's preferred language.
Also, translate the exception str() and rejection_notice for real
here.
|
|
|
|
|
|
for each processed message. It does this by getting the preferred
language of the sender of the message (defaulting to the list's
preferred language if the sender isn't a member of the list).
Next, it saves the previous global language context in a local
variable, sets the context to the message's preferred language and
disposes of the message. Then it restores the original language
context.
It also sets the message's metadata (key: `lang') to contain the
language name for the language context in case any handler modules
need access to it.
|
|
around via the message metadata key `lang' (set by the Runner). Use
this language to get the proper postack.txt template. Also be sure to
set the Content-Type: header on the message we're generating and
sending back to the user.
|
|
restore the translation context (via the global Translations object).
|
|
list-specific language templates directory.
|
|
|
|
the same time. Specifically,
main(): Create a master qrunner lock file, with a lifetime of 10 days
(but see below) and exit if that lock cannot be acquired.
master(): Start the lock-refresher subprocess and restart it if it
happens to exit.
start_lock_refresher(): A tiny subprocess that owns the qrunner lock
and periodically (once a day) wakes up to refresh it.
|
|
on the subject text is the right thing to use.
|
|
|
|
comments a little more palatable. L-strip all lines, strip out html
tags, and convert entities > and <
Still not perfect, but much better, and it's not worth perfecting.
|
|
|
|
|
|
Mark all appropriate strings as translatable.
|
|
determine whether this message was destined for the -owner or -admin
address and update the metadata.
|
|
DISCARD on subscription requests.
|
|
main(): Convert to the new Switchboard mechanisms. This means we
neither need to instantiate the mailing list, nor create a Message
object from stdin. A side effect of this change is that we can't
efficiently determine whether this message was destined for the -owner
or -admin address (since this script bogusly handles both). We defer
this decision to the CommandRunner.
|
|
the local variables interpolated into the exception message. Easiest
way to do that is to pass it through _().
|
|
At module scope, set the system language to the server's default,
until we know which list this is a request on.
main(): Don't lock the list until absolutely necessary. Also, once
the list is instantiated, set the system language to the list's
preferred language. Once the html results document object is created,
set its language to the list's preferred language too.
HandleRequests() -> process_form()
PrintRequests() -> show_requests()
handle_no_list(): Be sure to set the document's language to the
server's default (since there is no instantiated list at this point).
show_requests(): Support DEFER and DISCARD on subscription requests,
just like as for held posts.
PrintAddMemberRequest(): Inlined and removed.
PrintPostRequest() -> show_post_requests()
show_post_requests(): Convert to using the mimelib interface (it's a
minor shame that we have to reparse the message object to display it
on this page). Watch for mimelib.Errors.MessageParseError's which
could result if the held message is corrupted. If this occurs, we
discard the message, but that may not be the right thing to do.
process_form(): Don't save the MailList object here; that happens in
the finally: clause in main().
Also some minor verbiage and formatting changes.
|
|
requests too. This means you can defer making a decision about a
subscription just like a held message. You can also discard a
subscription request without sending a rejection notice.
|
|
Conversion to mimelib API.
PrintPostRequest(): We must html quote the Subject: text since this
gets displayed in-line in the page. E.g. if you had the following
header in a held message
Subject: </table>
it would royally screw the admindb display. Thanks to Brian Youmans
for first reporting this problem.
|
|
HoldMessage(): GetSender() -> get_sender()
|
|
MDaemon 3.5.2), and usa.net running gawd knows what.
process(): Minor adjustment to algorithm which allows the address
matcher to find addresses on the line that matched start cre.
|
|
other Postfix installations use -- they removed the word "program" :(
Now, we just search for "the postfix".
|
|
a bit to messages that only contain X-Mailer: headers (regardless of
the content). All GroupWise samples so far add this header (but with
different values).
|
|
sample that's nearly DSN compliant -- it uses "Action: failure" when
it should be "Action: failed". Be liberal in what you accept.
|
|
|
|
bounce_01.txt is still unrecognized.
|
|
|
|
|