| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
confirm mail script.
|
| | |
|
| |
|
|
|
| |
Pending.SUBSCRIPTION key now uses UserDesc instances instead of
tuples.
|
| |
|
|
|
|
|
|
|
|
| |
button which changes the action of this page. When invite is chosen,
the addresses in the list are invited to the mailing list instead of
immediately subscribed.
mass_subscribe(), mass_remove(): Rewrite the questions table to use a
RadioButtonArray for consistency and cleanliness. Also the ui is
slightly better (I think).
|
| |
|
|
|
|
|
|
|
|
| |
database, we need to use pickle instead of marshal. Pickle's more
reliable and portable anyway.
We can do auto-upgrade from marshal to pickle. If the .pck file isn't
found, we'll read the .db file. But we always write the .pck file and
if that's successful we can delete the .db file. We also do the
standard "write a .tmp file and rotate with os.rename()" dance.
|
| |
|
|
|
|
|
|
|
|
|
| |
confirmation messages. Requires the confirmation cookie.
InviteNewMember(): Perform the actions to invite a person to the
mailing list. This involves sending the person an invitation
confirmation message and sticking them in the pending database.
AddMember(), ProcessConfirmation(): Pending.SUBSCRIPTION now takes a
single object, a UserDesc, instead of a tuple of components.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
variables which control an alternative way to do confirmations.
Instead of relying on an error prone recitation of a Subject: line, we
can (optionally) use a VERP-ish From: field with the confirmation
cookie in the reply address. This has the added advantage of being
able to include an actual human intelligible Subject: header in the
confirmation message. ;)
Currently, on the new invitation confirmation feature uses this,
although the confirmation conversations should be converted.
|
| | |
|
| |
|
|
| |
dot priv dot at)
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
fixed "two-instance lock file trample" bug is tested.
|
| |
|
|
| |
(with a dumb throttle).
|
| |
|
|
|
|
|
|
|
| |
_open_list() caches the MailList instances in a WeakValueDictionary
which don't contribute to the reference count, but ensure that each
runner will get one and only one copy of the MailList data.
This should help in the memory footprint of the runners, but I suspect
we may still be leaking something.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
two LockFile instances on the same file, both would report that they
owned the lock. This is a bug because unlocking the one that
shouldn't have had the lock will unlock both.
__init__(): To fix this for now we keep a class attribute counter
which is incremented each time a new LockFile instance is created.
This wouldn't work in a multithreaded environment, be we don't have
the problem. ;)
__repr__(): Add a little more information to the repr.
refresh(): When raising the NotLockedError, add a little useful
debugging string as the exception value.
|
| |
|
|
| |
the un-address that isn't on then <wink>.
|
| |
|
|
|
| |
creation, which is used to set the list's default_member_moderation
flag.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
admin notification message on holds) by calling set_charset(None).
Because we're not passing anything on the `text' argument to the
UserNotification constructor, no charset will get automatically
added.
|
| |
|
|
|
|
|
|
|
|
|
| |
on disabled-due-to-bounces and removal-due-to-bounces. Specifically,
GetConfigInfo(): Added gui elements for bounce_notify_owner_on_disable
and bounce_notify_owner_on_removal. Also add a separator between the
knobs for controlling bounce processing behavior and the knobs for
notification.
_setValue(): Teach it to convert the new list attributes to integers.
|
| |
|
|
|
|
|
| |
on disabled-due-to-bounces and removal-due-to-bounces. Specifically,
NewVars(): Add bounce_notify_owner_on_disable and
bounce_notify_owner_on_removal if missing.
|
| |
|
|
|
|
| |
on disabled-due-to-bounces and removal-due-to-bounces. Specifically,
Bump the DATA_FILE_VERSION to pick up the new list attributes.
|
| |
|
|
|
|
|
|
|
| |
the character set. The most common reason for this is that the
notification message is a multipart/mixed and it makes no sense to
give those type of messages a charset.
.send(): Set the `nodecorate' key to 1 so that messages that original
from the virgin queue don't get headers and footers.
|
| |
|
|
|
|
|
|
| |
on disabled-due-to-bounces and removal-due-to-bounces. Specifically,
DEFAULT_BOUNCE_NOTIFY_OWNER_ON_DISABLE,
DEFAULT_BOUNCE_NOTIFY_OWNER_ON_REMOVAL: Default values for the list
config attributes of the similar name.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
on disabled-due-to-bounces and removal-due-to-bounces. Specifically,
InitVars(): Add bounce_notify_owner_on_disable, and
bounce_notify_owner_on_removal.
disableBouncingMember(): Only send the admin a bounce notification if
bounce_notify_owner_on_disable is true.
sendNextNotification(): In the ApprovedDeleteMember() call, set the
admin_notif argument to the value of bounce_notify_owner_on_removal.
|
| |
|
|
| |
stamp out passwords. Get rid of all vestiges.
|
| |
|
|
|
|
|
| |
(one-per-line) for the mass subscribe or mass unsubscribe. This
should make this feature immune to native line endings, as
splitlines() handles all the common line endings: CR for Mac, LF for
Unix, CRLF for Windows.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
| |
instead of through the pipeline, we need to be able to disable
decoration even when going through SMTPDirect.process(). Examples
include messages sent to the -owners address and other messages
crafted internally.
Add a short-circuit recognition on the `nodecorate' metadata key.
|
| |
|
|
|
|
| |
more conveniently use a class attribute to specify this. On the
BounceRunner, turn off MailList object caching so that it'll be more
friendly to long-term memory use.
|
| |
|
|
|
| |
reply_to_address since, as the note says it's better to validate it on
entry, and we now have the architectural support for doing that.
|
| |
|
|
| |
strip Reply-To: headers.
|
| |
|
|
|
|
|
| |
describe the intent that an existing Reply-To: can always be stripped.
_setValue(): Check to make sure that the reply_to_address has a valid
email address before we allow the value to be set.
|
| |
|
|
|
|
|
|
| |
push the last chunk back on the undelivered list, then re-raise the
exception. This ensures that delivery will be re-attempted for the
last chunk. They'll get dupes but that's better than them missing the
message, and we don't know how many in that chunk may or may not have
gotten the message.
|
| |
|
|
| |
moderation bit comes from somewhere else.
|
| |
|
|
|
| |
the list's moderate attribute is enabled, then we need to set each
member's Moderate option to true.
|
| |
|
|
|
|
| |
sequence of 2-tuples. We're only interested in the first element of
these 2-tuples, since that is the one that names the subcategory (the
second element is a description).
|
| |
|
|
|
|
|
| |
and footer by concatenation if the list's charset is us-ascii, since
all charsets we support are strict supersets of us-ascii. Also,
coerce the message's charset parameter to lowercase for the
comparison.
|
| |
|
|
| |
qfiles/shunt back to their original queue.
|
| | |
|