| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
- 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.
|
| | |
|
| |
|
|
|
| |
awkward 'posters' option description so its interaction with
member_posting_only is easier to understand.
|
| | |
|
| |
|
|
|
|
| |
definition -- the only place it's used. Also, comment out the whole
def and __builtin__ hack. This debugging stuff probably shouldn't go
into the release (although its use should be documented).
|
| | |
|
| |
|
|
|
|
|
| |
includes digest, so the check for the special handling of the digest
option was no longer working. I've reinstated that by explicitly
checking for that special case first, so now the mailcommand version
of digest setting is working.
|
| |
|
|
|
|
|
|
|
|
|
| |
Digester.SetUserDigest(), and possibly other places) the members dict
values to 1 now, as well as 0, breaking the user password recognition.
This is fucked up. Anyway, i'm dealing with that by not checking the
for a 0 from the get, but rather assuming a string returned means that
the returned value should be used instead of the index. The
complications with the different values should be fixed, as well, but
i no longer know what the right thing is, because i don't know the
purpose of the use of 1 instead of 0, if any. Sigh.
|
| |
|
|
| |
routine had mail.GetSender()...
|
| |
|
|
|
|
|
|
|
| |
was getting called with the wrong arguments - confirmation of the old
password needed to be done in a separate call to
ConfirmUserPassword().
(Incidentally, i am hoping that i repaired a problem with the
mechanism that pushes the cvs source - this will test it.)
|
| |
|
|
| |
a bit.
|
| |
|
|
|
|
|
|
|
|
|
| |
resurrect the old one and then reraising the error. (Just before he
left for the Usenix conference, John encountered a partition filling
with a large config.db, and the old config.db not being resurrected.)
I created a little utility function to move a file aside and
optionally create a new one - this (aside_new()) may belong in Utils,
if it's useful elsewhere. We're all in minimal-time mode, so that'll
have to wait...
|
| |
|
|
| |
bizarrely raggedy).
|
| |
|
|
| |
confirmations expire after the set number of days.
|
| |
|
|
|
|
|
|
|
| |
was being rejected if >= 2, when it should be rejected only when > 2.
Added confirmation step for assurance the user's entering what they
think (and slightly changed phrasing of prompt for clarity).
All was suggested by guido.
|
| | |
|
| |
|
|
|
| |
IndexError. (I left the IndexError on the exception list in case
there's some other purpose to it...)
|
| |
|
|
| |
scott
|
| |
|
|
|
|
|
|
| |
add_members is just like convert_list was, except that
1) the "Send big changes" option defaults to no.
2) the -c and -w options are specified in the short version of the
usage.
scott
|
| |
|
|
|
|
|
|
|
|
|
| |
I added a list.Save() after each section (non-digest-members and
members) that had any additions.
I should note that the some partial saving *was* being done, just
before the password entry was added - and probably during the addition
of _every_ member. This would seem to defeat the speedup benefits,
while also introducing a bug of partial saving. This should be
rectified one way or the other!
|
| |
|
|
|
| |
string (now using dict substitution, instead), plus the URL was
missing quotes, plus the URL was missing 'mailto:'.
|
| |
|
|
|
|
|
| |
in ApprovedAddMember, new confirmed subscriptions were being only
partially saved - the password entry was being left out. Which is a
problem. (In the five hours this has been happening on my site, i
wonder how many broken accounts there are? Not good.)
|
| |
|
|
|
|
|
|
|
|
|
| |
name optimizations - provisions to fix it are gross. It would be nice
to have an abstraction for getting the user account name under which
their password is registered (which i would call the normalized
account name). I suspect that FindUser() could serve for that, but
i'm not certain what the optimizations considerations are. I am afraid
that it is significantly more confusing, overall, to figure out which
subscription name to use (user-specified case-preserved, or lower
case) in what situation.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
of RCPT TO smtp commands can be given for a single message.
This is necessary to make large lists work with mailers that have a
maximum number of recipients per message (most do).
Defaults.py.in - added SMTP_MAX_RCPTS with default value of 500, which
i believe is conservatively small.
contact_transport - made it chunkify the recipients into chunks of <=
SMTP_MAX_RCPTS and go through the delivery process for each of those
chunks.
This change shouldn't have much effect on smaller lists at all.
scott
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two cases, each addressed, and with reservations about the handling of
both:
- Sender is null, after trying both GetEnvelopeSender and GetSender.
Address by using self.GetAdminEmail(). I'm not sure the right thing
to do, here - this is as close as i could come.
- Sender is not null, but lacks any domain spec - which can happen
when the sender is on the local host. An unqualified sender seems
to prevent delivery of the mail, or of bounce messages, anywhere, so
it's a very bad thing. Again, i'm arbitrarily imposing
@mailman-host.
Both of these things needed to be patched over so the mail would be
delivered (hmm, "Neither rain nor snow nor bugs that smite...-). More
rational approaches (or at least, good rationales for these) would be
quite welcome...
|
| |
|
|
|
|
|
|
|
|
|
| |
calculation of html user lists to the roster cgi program.
HTMLFormatter: added a .GetAllReplacements() method that does the same
thing as GetStandardRepplacements() but also calculates all the html
for users lists. Removed the calculation of all the html for the user
lists from GetStandardReplacements().
Cgi/roster.py replaced call of GetStandardReplacements() with
GetAllReplacements().
scott
|
| |
|
|
|
|
|
| |
out a warning if the test fails.
this way comments and most accidental stuff that gets into a file to
import should not be added.
scott
|
| |
|
|
|
|
| |
instead of the list bounce_info.keys() as the second arg to fit the
new FindMatchingAddresses signature.
scott
|
| |
|
|
|
|
|
|
|
|
| |
line occurred at the beginning of an article - because the
space-preserving format style would try to prepend "<pre>" to the None
object that's used as a place holder. Instead of doing string
concatenation, i'm doing the simpler [].insert(0...) and [].append()
to the list of lines. (It'd probably also be a good idea to fix the
code to not use the None place holders, but it's hard to tell what
depends on what there.)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
First of all, i'm setting the default message archive style to
preserve horizontal whitespace, use <pre>, instead of putting a <br>
at the beginning of every line.
More deeply, i'm inhibiting all completely-uppercase variables from
being included in the pickled settings for the list. As with the
VERBOSE problem i addressed in my last checkin, changes to one of the
class default settings at any time *after* the archive object state
was resurrected would be reinstated thence forward - overriding the
defaults, and any other settings. This is not a good interface for
setting options - and i'm not really offering an alternative, other
than making the defaults come back the next time the list is
reinstated, rather than preserving the changes. We need to resolve
this - i suppose with an interface that distinguishes permanent from
temporary settings.
In general i've changed the defaults so they preserve more of the
structure of the postings (and included very brief comments presenting
what i could glean of the settings from the code - this code here does
not seem to have been written to be understood).
|
| |
|
|
|
|
|
| |
was being resurrected from the initial setting for the maillist - for
sites that upgraded using the arch script, set to 1. Which meant for
those sites that the error log would get a new entry for every item
being archived...
|
| |
|
|
|
|
|
|
| |
within a try/finally to ensure, as best we can, that it happens. This
may take care of the problems that greg stein was reporting, where a
pipe was failing to properly notice the loss of the parent process -
now the parent should exit normally. Not sure, this is the best guess
so far (out of a discussion w/scott and barry).
|
| | |
|
| |
|
|
|
|
|
| |
at the top - i'm assuming that the attention decreases the older an
archive is, more or less.
Wrapped lots of long lines.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
work like unix mail: username portions of addresses are
case-preserved for delivery only. All other address comparisons are
lowercase.
up'd data version in Defaults to 13
** MailList.py: added an __AddMember method that takes an address and
whether or not it is a digest address as args and populates the member
dictionary like this:
if string.lower(addr) == LCDomain(addr):
member_dict[addr] = 0
else:
member_dictp[string.lower(addr)] == LCDomain(addr)
added .GetDeliveryMembers() and .GetDigestDeliveryMembers() methods
for use by posting and digest delivery mechanisms.
changed a nested def portion in Post to use an explicit loop.
**Digester.py: uses .GetDigestDeliveryMembers instead of
.GetDigestMembers().
**Utils.py: address comparisons are lc.
**versions.py: populate the member dicts according to the above
formula.
**Cgi/admin.py: fixed a bug introduced from the first change to using
member dictionaries: all members were showing up as digest members
on the admin membership page. changed a dict.get to dict.has_key to
fix this.
NOTE: this code is tested only insofar as I posted and poked around on
the cgi's a bit, and let lists do the versions code. These changes
should be tested more, but I *have* to go now and wanted to check them
in before someone made it difficult to do so by changing stuff
tomarrow, cause i'm gone all day tomarrow.
scott
|
| |
|
|
|
|
| |
address lacks a domain. (I'm currently returning the list with just
the bare account name, scott please consider whether or not this is
sensible, i'm going on partial knowledge of your changes.)
|
| | |
|
| |
|
|
|
| |
MailList object no longer takes care of this.
scott
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fix and one addition. Sorry, i realized that too late.
This change adds another list conifg variable "admin_notify_mchanges",
which is a boolean 0 or 1 and specifies whether or not the list admin
gets notifications of subscriptions and unsubscriptions.
The functions MailList.DeleteMember and MailList.ApprovedAddMember
trigger the delivery if it is turned on for the list or passed in as
an optional argument. This way, it is the duty of programs/code that
do mass subscriptions/unsubscriptions where this notification may not
be appropriate to specify that in the call to .DeleteMember or
.ApprovedAddMember.
There are 2 new templates, adminsubscribeack.txt and
adminunsubscribeack.txt which are used in sending these
notifications.
Defaults.py.in has a variable "DEFAULT_ADMIN_NOTIFY_MCHANGES" which is
set to 0 so that old lists will act the same by default, and the data
version is up'ed to 12. versions.py sets the variable if it's not
already there for a list. The config info for the admin cgi program
for this new variable is set right after the variable for immediate
notifications.
The second change is a fix where ApprovedAddMember was calling a
"self.Save()", which made mass subscribe situiations really far too
slow. I removed the .Save() from there and added it to the more outer
level code in the following places:
bin/convert_list
Mailman/ListAdmin.py
Mailman/MailCommandHandler.py
Mailman/Cgi/admin.py
Note that since AddMember can trigger a call to ApprovedAddMember, all
the places where AddMember is called needed a .Save() added as well.
I need to add a call to .Save() for Mailman/Cgi/subscribe.py as well
and will do that in a moment.
scott
|