| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
test for type isa StringType.
MsgSafeDict.__getitem__(): Fix the handling of missing header in the
`allmsg_' clause, so that it returns 'n/a' instead of trying to
join a bogus value.
MsgSafeDict.copy(): mimelib -> email.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RegisterBounce(): Use mm_cfg.days() to calculate days. Also, started
adding notes to help myself understand how this method works. :(
HandleBouncingAddress(): Get rid of the crufty mimetools based bounce
notification stuff in favor of using an email package based
scheme (i.e. using MIMEMessage() to encapsulate the triggering
message).
This also lets us change bounce.txt to not include any MIME crud.
BounceMessage(): Make `e' optional, and change the semantics so that
if it was given, it /is/ the bounce details; it is no longer an
object with a .details() method.
Also, handle the situation where msg has no Subject: header.
|
| | |
|
| | |
|
| |
|
|
| |
this work when mlist is None.
|
| | |
|
| | |
|
| |
|
|
|
| |
two subcolumns. Also, split the password entry fields into their
own pseudo-subcategory (like members).
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
the key. It's strictly interpreting the relevant RFC. We may
change Cookie.py to be more relaxed, but instead of trying to
maintain our own copy of this file, we'll just change the
separator to be a `+' intead of a `:' -- Cookie.py seems happy
with this.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Marshal is not guaranteed to be compatible across Python versions, and
while I'm not aware of any breakage since Py1.5.2, better to be
defensive here.
Specific changes include:
__save(): Dump the dict to the file as a binary cPickle. Do the dump
directly instead of dumping a string to fp.write() since -- I hope
-- cPickle doesn't suffer from the same problem as the comment
describes marshal as suffering from (I don't actually remember the
details of that).
__load(): Teach this method how to load .pck (i.e. config.pck) pickle
files, but retain the ability to load .db marshal files for
automatic upgrade. Also, add a catch of cPickle.PicklingError to
the big except clause.
Load(): Teach this how to load .pck and .db files, always defaulting
to .pck first. If the primary file was ever corrupt and we had to
load from the .last file, we'll make a copy of .last to a .safety
file just in case.
|
| |
|
|
| |
own category. Rearranged the two columns for better symmetry.
|
| |
|
|
| |
signature.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
always get the correct file size if the Generator didn't leave the
file pointer at the EOF. Let's use os.path.getsize() -- after a
flush -- instead. Closes this bug report.
send_i18n_digests(): Update to email package API; use msg.get_all()
intead of msg.getall().
|
| |
|
|
|
| |
package's Message.as_string() method. (This is one module which
doesn't yet have a unittest. );
|
| |
|
|
|
| |
.db files, and to allow argument-less construction. This is used by
bin/dumpdb.
|
| |
|
|
| |
there actually were any members removed.
|
| |
|
|
|
|
| |
"member". This makes translation to some languages difficult.
Instead, construct different messages based on whether
num_concealed is == 1 or > 1.
|
| |
|
|
| |
scripts/driver doesn't work.
|
| |
|
|
|
| |
since some nntpd servers will complain about these if they exist,
and will reject the message posting.
|
| | |
|
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| |
|
|
| |
module.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
process(): Also, use the MembershipAdaptor API for calculating the
recipients of an urgent message.
|
| |
|
|
|
|
| |
process(): Fixed buglet so that if there is no Subject: header in the
original message, "(no subject)" -- properly i18nified -- will be
used instead of "None".
|
| |
|
|
| |
supported.
|
| |
|
|
|
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
admindb.py: Use ListAdmin.readMessage() to actually read the contents
of the message from disk.
|
| |
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
|
| |
|
|
| |
module. Also, we don't need the string module.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also, use cStringIO directly instead of our own hack-around StringIO
module.
InitTempVars(): Don't set __filename here, since InitTempVars() is
never called when the list is Create()'d (which may itself be a
buglet).
__filename(), __opendb(), __closedb(): New method to return the
request.db absolute path on the fly. Use this in __opendb() and
__closedb().
HoldMessage(): Store the message as a pickle instead of generating the
plain text representation. This should be faster than reparsing
on input.
readMessage(): New function that will read either pickle or plain text
held messages, depending on the file extension. This helps with
backwards compatibility.
|
| | |
|
| | |
|
| |
|
|
| |
Reported by Luca Maranzano.
|
| |
|
|
| |
translation.
|
| | |
|
| |
|
|
| |
Mentor Cana and Michael Totschnig.
|
| |
|
|
|
|
|
| |
more informative message to logs/vette (one that includes the
Message-ID: of the original message). Also, include an
X-Moderated: header which lets recipients know when -- and by
whom -- the message was approved.
|
| |
|
|
|
|
| |
just short-circuit returns. We need to do this after moving the
Save() into the try clause (which may turn out to not be the right
thing to do...)
|
| |
|
|
|
| |
confirm string construction to not use %(cookie)s -- unnecessary
since de-i18n-ifying these strings. Found by Mikhail Sobolev.
|
| |
|
|
|
|
|
|
|
|
| |
the class, already i18n-ified.
MessageTooBig.reason_notice(): Add this instead of setting a reason
attribute, so that the proper i18n interpolation can occur.
hold_for_approval(): Don't i18n-ify rejection-notice and don't
str()-ify the reason string. Just send both through Utils.wrap().
|
| |
|
|
|
|
|
|
|
| |
many problem due to docstring non-extraction in pygettext). Now
the attribute `reason' is used as the reason instead of the
docstring, and reason_notice() is the called interface. This
mirrors exactly how rejection notices are done.
HoldMessage.__str__(): Removed.
|
| | |
|