| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Added a NEWS file.
Move old bin scripts to the attic.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
"funny" characters in their names. We coerce the output to the
default encoding, although I'm not 100% sure this is the right thing
to do. (Works for me.)
Also, MMNoSuchUserError -> NotAMemberError
|
| |
|
|
|
|
| |
and cron scripts. When code/status == 0, there's no error (it's
likely --help output) so send that to stdout. Otherwise, it's an
error and the output goes to stderr.
|
| | |
|
| | |
|
| |
|
|
|
| |
override the list's default send_goodbye_msg setting. Contributed by
Alessio Bragadini.
|
| | |
|
| |
|
|
|
|
|
|
|
| |
modules. Specifically, import the email package /after/ we've
imported paths.
Also, in add_members: change the import of StringIO to use the Python
standard cStringIO module, which we can now pretty much guarantee to
be there.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- When Errors.EmailAddressError is raised, the translatable string in
the print statement was illegal.
- If an email address showed up twice in the sync file, a dry-run
would have shown that address to be addable, even if it was already
a member of the list.
- If there were legacy illegal address in the user database
(e.g. aperson@@dom.ain), then ApprovedDeleteMember() would fail on
it with an MMNoSuchUserError, because parseaddr() in the former
method would return some bogus address like "aperson@". In that
case, use a lower level routine to delete the bogus record from the
member database.
|
| |
|
|
|
|
|
|
| |
email.Utils.getaddresses() instead. Found by Fil.
Also, converted to UserDesc interface for ApprovedAddMember(), and
added support for sucking the Real Name out of the sync file. Also
fixed some bugs in the output format strings.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
into the script's #! line -- based on --with-python settings, without
losing CVS revision history.
#! /usr/bin/env python
becomes
#! @PYTHON@
which gets substituted for in configure.
|
| |
|
|
|
|
|
|
|
| |
API instead, e.g.
GetMembers()/GetDigestMembers() -> getMembers()
GetUserSubscribedAddress() -> getMemberCPAddress()
GetDeliveryMembers() -> getRegularMemberKeys()
GetDigestDeliveryMembers() -> getDigestMemberKeys()
|
| |
|
|
| |
Use extended print statement and other Python 2.0 features.
|
| |
|
|
| |
Utils.MakeRandomPassword() instead of handcrafting it here.
|
| |
|
|
|
|
|
| |
insensitive. list_lists prints them out using their real name -- not
their internal name -- and they should differ only by case.
Closes SF bug #113742 and patch #101434.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mailing list. In all cases, catch the base exception class
MMListError, and output a semi-standard error message which also
contains the str() of the actual exception details (is this too
much?).
Also:
config_list: slightly different usage() printing
find_member.scanlists(): print a message if a MMListError occurs
when opening the mailing list object
remove_members: Wrap actual DeleteMember() calls in a try/finally
to be sure the list is saved and unlocked should an exception
occur. Hmm, should it be all or nothing?
|
| | |
|
| |
|
|
| |
behavior.
|
| |
|
|
|
| |
is `-'. It was implemented to read addresses from the command line.
I changed the implementation to agree with the documentation.
|
| |
|
|
| |
file).
|
| | |
|
| | |
|
| |
|
|
| |
(first non-whitespace is a #).
|
| | |
|
| |
|