| Commit message (Collapse) | Author | Files | Lines |
|
then check to see if the remote SMTP supports DSN. If so, we'll add
the NOTIFY=failure to the receipt options.
|
|
list admin has disabled digests, but the user selects to turn it on.
A better solution would be to not present this option to the user in
that case.
At least now, we give a more meaningful message instead of letting the
exception percolate!
|
|
|
|
upgrade to 1.0b6
|
|
|
|
also remove bin/update_to_10b6 :-)
|
|
This file will be renamed to bin/update by hacking the CVS
repository. You will not see a checkin message for this.
|
|
script to generate Mailman/pythonlib/Makefile.
|
|
|
|
we're getting a modern smtplib.py, either from Python, or from
Mailman.pythonlib package.
Also, use the current standard interface to smtplib.
|
|
coding, comments, etc. formatting nits.
|
|
version, which sits in the pythonlib subdirectory anyway.
|
|
|
|
Pythons. When Mailman requires a newer version of a standard Python
library than can be required to already be installed, we copy the .py
file to this directory. This makes it easier to remove later when
that version of Python is required.
Other than the standard package and CVS boilerplate, smtplib.py is the
latest almost-Python-1.5.2 version.
|
|
Emacs ;-)
|
|
bugs in various docstrings.
|
|
See README for one minor difference.
|
|
|
|
fault.
Refined class exceptions improvement suggestion, specifying an idea i
have about organization...
|
|
"Here's a patch to private.py which makes it 1) return text/plain as
the content type if the file ends in .txt, and 2) look for
<filename>.gz if <filename> doesn't exist, and uses the gzip
module to read it."
Minimally tested, since I've got Pipermail installed. Doesn't seem
hurt.
|
|
instead of on each pending message. Two advantages: you can't even
see the held messages if you don't have the password, and it's also
easier to deal with the held messages this way.
Two nasty bits: most of the code was copied from admin.py, so there's
a lot of crufty duplication of effort (but then, all the CGI stuff
could go through a major cleaning). Also, if there are no messages
being held, that information is given without need for admin
password. That seems innocuous enough.
Also got rid of a couple of eval()s lurking in the code. I think they
were just there to do string->int conversion, and there's a much safer
way of doing this.
|
|
Added Emacs cruft to end of files
|
|
versions of make, and aren't really necessary anyway.
|
|
|
|
|
|
sys.stderr.write() to write error messages.
|
|
- reorganized into functions with a small amount of __main__ code
- re-ordered the way the work gets done between the parent and the
child. it was possible the gate_watermarks file would be
continuously trashed because it was written by every child process,
which run asynchronously. now only the parent writes this file, but
it does so after each list's gating child process starts.
This also means that the parent is what makes the initial NNTP
connection, and gets the stats of the list (e.g. first and last).
These it passes to the child process, along with the current
watermark. The child just does the actual gating.
- Added a per-list locking file so that only one gate_news process
will be gating a list at any one time. What happens is: the parent
acquires the per-list lock. If that fails, it just moves on to the
next list; gate_news runs again in 5 minutes anyway, and the
hung_timeout on the lock is set to 4 minutes.
If the parent gets the per-list lock, it forks a child to handle
gating that list. The child then steals the lock from the parent
(this should be safe), gates all the new messages, and then releases
the per-list lock.
This new code should be forking-safe, should not have run away
processes, and lets you run gate_news from the command line without
interfering with any cron spawned gate_news process.
|
|
cron/gate_news script. API to the method has changed, since gate_news
calculates the watermark, first, and last, and passes in the NNTP
connection object. This method now returns None.
Also fixed a bug in the range() calculation that caused every message
in the newsgroup to be gated to the list!
Fixed a bogus except.
|
|
into the lock file. USE WITH CAUTION. Necessary because in the new
news/mail gating code, the parent acquires the lock, and if
successful, the child will steal it from the parent and then unlock it
when done. This should be safe, with a very small race window, if
any.
|
|
|
|
the original, for each of the links - and also, needed to used the
Utils.ObscuredEmail() version of that, since that's the more common,
"normal" form.
|
|
list-subscriptions headers, refine some of the text.
|
|
|
|
[Prefix], add one. This test is a little different than the one in
MailList.py; we check for [Prefix] in the entire line.
|
|
|
|
- Add some (barely) explanatory text, and
- sort the list of names.
|
|
subscriptions, so people can, eg, see the number go down as they
unsubscribe, etc.
|
|
unsubscribe section) from which a subscriber can visit a list of all
their subscriptions.
(We're going to have to remember to tell all beta testers to put the
new list templates in place over the copies in the list dirs - it's
unfortunate they don't default to a central one when the lists don't
have their own custom versions - and must be fixed...)
|
|
|
|
subscribe to. I'm adding a button on the user options page that they
can click, as long as they provide their password, to get to a page of
links to the options pages for all their subscriptions on the current
system. It's not very pretty (options.py and handle_options.py are
even more packed with miscellaneous stuff, and the page they go to is
extremely unrefined), but i think it's not bad for an hour hack, and
is needed.
(The password protection is necessary since the user options page is
visible to anyone, and not having a password would give away the list
of private subscriptions.)
|
|
|
|
From: Greg Stein <gstein@lyra.org>
To: mailman-developers@python.org
Subject: [Mailman-Developers] patch to subscribeack.txt
I received a report that the welcome message is slightly misleading. I
changed a couple lines in the middle to read:
with the word "help" in the subject or body (don't add the quotes),
and you will get back a message with instructions.
Cheers,
-g
|
|
add_members was still calling itself convert_list in the docstring.
|
|
That way, if the admin re-runs configure (or config.status), possibly
changing the CGI or Mail GID's, the wrappers will get automatically
recompiled.
|
|
have a newsfeed I can post to. Someone please check this (at least it
doesn't have syntax errors :-)
- Reformatted to standard 4-space indents, and untabified.
- Moved common imports (which have already probably been done in the
process) to the top of the file. Imports of Message and nntplib are
left in place.
- QuickEscape is moderately bogus, but at least do it legally (don't
compare exception based on string value, base it on object
equivalence).
- In PollNewsGroup(), we know we want count, first, and last (as
returned from con.group()) to be integers. Convert them right after
retrieval with int() instead of when used using slower/riskier
eval().
- When opening the pipe, craft the command to execute
/path/to/python /other/path/to/scripts/post listname nonews
using the configure calculated paths in the first two arguments.
This is because scripts/post isn't installed with execute bit set.
- In SendMailToNewsGroup() we only add a Sender: header if one doesn't
already exist. Also, watch for existing Newsgroups: header; if one
exists, check to see if our linked_group is already present. Only
if not do we append our group. If Newsgroups: doesn't exist at all,
add it.
|
|
1) OutgoingMessage.__delitem__() when name is missing probably ought
to raise an exception instead of returning None.
2) There probably ought to be at least also an
OutgoingMessage.__setitem__() too.
|
|
Mailman source tree. This will pre-byte-compile all the .py files.
However the scripts which do not end in .py are not compiled; that
should be fine for now.
|