summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* show_post_requests(): When deciding to show a smaller part of a heldbwarsaw2001-10-101-1/+2
| | | | | message (because of ADMINDB_PAGE_TEXT_LIMIT), join the strings with the empty string, not newlines.
* main(): Don't force admin_notif=1 when callingbwarsaw2001-10-101-2/+2
| | | | | | ApprovedDeleteMember(). When the user unsubscribes via her options page, admin notification should follow the list's setting.
* mimelib -> emailbwarsaw2001-10-101-1/+1
|
* bounce.txt no longer needs the leading MIME chrome, since we use thebwarsaw2001-10-0910-62/+2
| | | | email package to constructa proper MIME message.
* test_urgent_reject(): Test that a RejectMessage is raised, not abwarsaw2001-10-091-2/+112
| | | | | | RejectUrgentMessage. TestTagger: many tests of the Tagger handler.
* Added a bunch of new tests for bounce formats from Exim, Yahoo,bwarsaw2001-10-091-0/+26
| | | | | | | | Postfix/DSN, and Netscape. test_caiwireless(), test_microsoft(): I lost my samples of these bounce formats, so added some really trivial (and mostly useless) tests of these MTAs.
* prepare_message(): mimelib -> email.bwarsaw2001-10-091-1/+1
|
* process(), scanbody(): mimelib -> email.bwarsaw2001-10-091-6/+6
|
* RejectUrgentMessage: Remove this since the base class, RejectMessage,bwarsaw2001-10-091-22/+5
| | | | | | | is fine for our needs. process(): Raise RejectMessage instead, and use the rejection text as the value of the exception.
* process(): Pass a failobj of [] to the get_all() call so that even ifbwarsaw2001-10-091-1/+1
| | | | the field is missing, we get a valid list object.
* HasExplicitDest(), hasMatchingHeader(): Pass a failobj of [] to thebwarsaw2001-10-091-2/+2
| | | | | get_all() call so that even if the field is missing, we get a valid list object.
* GetMailmanFooter(): A fix by (I believe) Mikhail Sobolev to makebwarsaw2001-10-091-3/+4
| | | | Russian translation easier.
* main(): Dan Mick's fix to avoid duplicate footers when you get a 'nobwarsaw2001-10-091-1/+0
| | | | such member' error.
* process(): Added a big ol' comment describing a potential bogosity inbwarsaw2001-10-091-2/+5
| | | | handling "delayed" DSN reports.
* process(): Convert from the mimelib API to the email package API.bwarsaw2001-10-096-23/+12
|
* Add a useful comment about what the Stop is for.bwarsaw2001-10-091-0/+4
|
* AuthContextInfo(): Python 2.x's Cookie.py module is strict about legalbwarsaw2001-10-091-6/+7
| | | | | | | | | | | | | | | | | | characters in keys, and it complains about the `@' signs in the email addresses of AuthUser keys. So we'll obscure the email address, changing `@' to `--at--', which contains only happy characters. This doesn't affect auto-guessing of the user based on the presence of the cookie, because we just need to unobscure whatever follows the `user+' prefix. WebAuthenticate(): MMNotAMemberError -> NotAMemberError MakeCookie(): Raise ValueError instead of MMBadUserError. CheckCookie(): The prefix for AuthUser is listname+user+, and here's where we unobscure anything we've found.
* SafeDict.__getitem__(): Use isinstance() instead of a comparison tobwarsaw2001-10-091-3/+7
| | | | | | | | | | 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.
* ClearBounceInfo(), RegisterBounce(): Rename argument `email' to `member'.bwarsaw2001-10-091-59/+39
| | | | | | | | | | | | | | | | | | 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.
* Some more sample bouncesbwarsaw2001-10-094-0/+359
|
* New tests for the Message class (Mailman's not mimelib's), thebwarsaw2001-10-093-0/+466
| | | | SafeDict class and the SecurityManager class.
* MODULES: Added message, safedict, and security_mgr tests.bwarsaw2001-10-091-1/+2
|
* Move the actual tests out of here and into test_message.py; this filebwarsaw2001-10-091-71/+7
| | | | | | | | | | only contains the base class. Get SMTPPORT out of mm_cfg.py since they must match (it has to set up a server listening on the same port that SMTPDirect will try to connect to as a client). tearDown(): Need this to close the server and call the base class tearDown(), so that the port will be available for each subsequent test.
* Removed email-0.90 and added email-0.91 distutils packages. Thisbwarsaw2001-10-092-0/+0
| | | | | | | | | | sync's things up with Python 2.2's and mimelib's latest APIs. Two primary differences: - Fixed a bug in Message.get_all() that caused failobj to never be returned. - Added MIMEAudio class/module by Anthony Baxter
* ParseMailCommands(): addheader() -> add_header().bwarsaw2001-10-051-4/+4
|
* Don't set host_name and web_page_url in the individual tests, sincebwarsaw2001-10-051-26/+7
| | | | | | | | that's done in TestBase now. Also, comment out the assertions about received_time. Clock skew apparently makes this too unreliable (we could do an interval test, but it's not worth it).
* TestBase.setUp(): set host_name and web_page_url attributes sincebwarsaw2001-10-051-0/+3
| | | | | | we're almost always going to want these. Also .Save() the list so it's config.pck gets written out to disk (needed for the thru-smtp tests which open the list in a separate process).
* A basic test for SMTPDirect->MTA thrupath, using smtpd.py module tobwarsaw2001-10-050-0/+0
| | | | simulate a listening smtpd, reading in the message for comparsion.
* intermediatebwarsaw2001-10-051-0/+139
|
* Add a test of the Qmail detector.bwarsaw2001-10-041-0/+2
|
* A qmail bounce examplebwarsaw2001-10-041-0/+103
|
* config.db -> config.pckbwarsaw2001-10-042-5/+5
|
* Fix this to check the config.pck and config.pck.last files too (I think).bwarsaw2001-10-041-5/+5
|
* Fix this to check the config.pck and config.pck.last files too.bwarsaw2001-10-042-53/+62
|
* Update a comment.bwarsaw2001-10-041-1/+1
|
* process(): Remove the last vestige of the string module. Also, makebwarsaw2001-10-041-3/+4
| | | | this work when mlist is None.
* Add the Passwords module.bwarsaw2001-10-041-0/+1
|
* The minimal gui elements for the passwords subcategory.bwarsaw2001-10-041-0/+26
|
* show_results(): Fix the calculation for splitting the left column intobwarsaw2001-10-041-13/+8
| | | | | two subcolumns. Also, split the password entry fields into their own pseudo-subcategory (like members).
* process(): Dan Mick discovers a hold over from the mimelib days.bwarsaw2001-10-041-6/+2
|
* Update a comment.bwarsaw2001-10-041-1/+1
|
* list_exists(): This has to know about config.pck and config.pck.last files.bwarsaw2001-10-041-5/+10
|
* AuthContextInfo(): Python's standard Cookie.py doesn't allow colons inbwarsaw2001-10-041-2/+2
| | | | | | | | 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.
* Switch to using binary cpickles as the config file data format.bwarsaw2001-10-041-47/+70
| | | | | | | | | | | | | | | | | | | | | | | | 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.
* ADMIN_CATEGORIES: Split password page off of the general page into itsbwarsaw2001-10-041-4/+6
| | | | own category. Rearranged the two columns for better symmetry.
* DisableBouncingAddress(): Fixed a syslog() call, using its newbwarsaw2001-10-041-1/+1
| | | | signature.
* We've got German translations (mostly) now.bwarsaw2001-10-031-1/+1
|
* Updatesbwarsaw2001-10-034-4/+16
|
* Binary catalog for Hungarianbwarsaw2001-10-031-0/+0
|
* Add `de' language for German translations.bwarsaw2001-10-031-0/+1
|