| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
additional indirection that's overridden by the BounceRunner.
Defaults to QRUNNER_SLEEP_TIME for backwards compatibility.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
perform better. In general there are two changes: 1) we never lock a
list until and unless absolutely necessary, 2) we only run the bounce
runner once every minute (as opposed to the normal runners'
once-per-second sleep time). Specifically,
SLEEPTIME: The base class now looks at this attribute to decide how
long to sleep between loop iterations, and it defines a default. We
override the bounce runner's value to lengthen the time it sleeps to 1
minute (we may eventually want to move this to Defaults.py).
__scanbounce(): Gone. All its functionality is subsumed in the new
ScanMessages() method and the new _dispose().
__verpbounce(): Renamed to the non-method verp_bounce(). Also, we rip
out the code that iterates through all the lists if the bounce came to
the site list's -bounces address.
_dispose(): Simply calls verp_bounce() to find bouncing addresses, and
if that returns a false value (empty list), calls ScanMessages() to
see if the bounce detector can find some bouncing addresses. If not,
we're done (after possibly forwarding the non-matching message).
Otherwise, we register the bounce either on the target mailing list,
or on all the mailing lists if this came to the site's -bounces
address.
|
| |
|
|
|
|
|
|
|
|
| |
for the BounceRunner. Instead of actually registering the bounces
here, it simply returns the list of addresses that have matched. It
returns an empty list if none of the bounce detectors found any
addresses.
I'm also ripping out the test code. The unit test suite is more
appropriate.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
GetBouncesEmail(): Return the list's -bounces address.
GetAdminEmail(): Obsolete, removed.
AddMember(), ChangeMemberAddress(), ConfirmUnsubscription(): Make the
notification email appear to come from the -bounces address. When the
sender is for human consumption, make it the -owner address (or in the
case of Cleanse.py for anonymous lists, the list posting address).
|
| |
|
|
|
| |
process(): Make the notification email appear to come from the
-bounces address.
|
| |
|
|
|
| |
package to know how to unpack the request record. bin/update should
now canonicalize them.
|
| |
|
|
| |
lengths.
|
| |
|
|
|
|
|
| |
process(), hold_for_approval(), do_discard(): Make the notification
email appear to come from the -bounces address. When the sender is
for human consumption, make it the -owner address (or in the case of
Cleanse.py for anonymous lists, the list posting address).
|
| |
|
|
|
| |
process_form(): Make the notification email appear to come from the
-bounces address.
|
| |
|
|
| |
record in a message held request is always 6.
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
__handlepost(), __refuse(): Send messages from the -bounces address so
that errors will get bounce processed.
__refuse(): In the refuse.txt, use the -owner address as the
%(adminaddr)s expansion so that when the human acts on this message,
they'll contact a human without going through the bounce processor.
_UpdateRecords(): This is will be used in bin/update to canonicalize
all the request.db records. Specifically, the SUBSCRIPTION records
will always be of length 6 and the HELDMSG records will also always be
6. For shorter records, provide reasonable defaults.
|
| |
|
|
|
|
|
|
| |
GetStandardReplacements(): Expand <mm-owner> tags to the -owner
address. This is more appropriate than the -bounces address because
it reaches the human without going through the bounce processor.
Since this ends up in a message that a human will act on, it's the
correct address to use.
|
| |
|
|
|
|
| |
SendUnsubscribeAck(), MailUserPassword(): These now look like they're
coming from the -bounces address instead of the -admin address, which
is deprecated.
|
| |
|
|
|
|
| |
the form data if we're logging in. Apparently, using a checkbox in
this way doesn't get us tri-state (i.e. None for not present, 0 and
1); it just gets us None or 1.
|
| |
|
|
|
|
|
| |
"change my real name" field won't log you out. Since this is just
tag-twiddling I feel confident doing this for all languages, but...
Translators, please proofread!
|
| | |
|
| |
|
|
|
| |
the web ui when switching from one of the Chinese templates back to
some other language.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
listinfo.py
list_listinfo(): If the list only has one language enabled, omit
the language choice box. It's a waste of screen real-estate.
HTMLFormatter
GetStandardReplacements(): ditto
options.py
loginpage(): ditto. Also omit the paragraph that talks about
session cookies. It's probably over the heads of most users.
main(): Don't print the "No address given" if we're traveling here
from the listinfo page and they left the address field blank, as
per the instructions.
|
| |
|
|
|
|
|
|
| |
this is all just markup, I'm adding the <link> tag in the head for the
favicon.
Translators, please double check. I got the text for "Set globally"
by cutting and pasting.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
should be settable globally, since you're probably using the same MUA
for all your list traffic. Specifically:
main(): Define a Global class as a bag of attributes, and use this
instead of the separate global_* variables. Added the extraction of
the mime-globally form variable which sets the MIME digest setting
globally. Always call global_options(), which now does the "do we
need to do anything" test before locking the list.
options_page(): Replace <mm-global-mime-button> with a checkbox for
setting the MIME/plain text flag.
global_options(): Signature changed to take an instance. Make sure
that all non _* attributes have a non-None value before locking the
list. Also, set the DisableMime member option.
|
| |
|
|
| |
the head's LINK SHORTCUT ICON.
|
| |
|
|
|
| |
otherwise status for multiple actions may run together. Found by Fred
Drake.
|
| |
|
|
| |
dot at)
|
| |
|
|
| |
Thanks!
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
translation. French translator Ousmane Wilane kindly points out that this typo also existed in the norwegian translation. Thanks, Ousmane.. :-D
|
| |
|
|
|
| |
Note: Daniel Buchmann: It looks like the no catalog have the
same problem.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
Try again.
|
| |
|
|
| |
that broke it! Use src/common.h now.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|