| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
`legacy-announce` style is added. This is similar to the `legacy-default`
except set up for announce-only lists.
Also, major refactoring of the default style into (hopefully) smaller
composable units.
|
| | |
|
| | |
|
| |
|
|
| |
mailinglist.unsubscribe_policy, mailinglist.subscribe_auto_approval.
|
| | |
|
| |
|
|
| |
removed.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
IMailingList.style_name attribute. The problem is, there's nothing to
guarantee that only one style will get run, and there's no sense in keeping
track of the last style applied.
Also:
* Remove ListManager.create()'s setting of .personalize and .display_name.
These should be left to the styles. (There's no reason why only these two
would be set here.)
* Fix some typos.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Rework list style management. No more style priorities or matching.. Now,
you name a style explicitly to apply and that's it.
* create_list() now takes a `style` argument.
* config file now names both a default style to use, and a set of paths to
scan for IStyle instances. (This could be a model for other plugins.)
* added IMailingList.style_name to record the last style applied, but this is
going to be removed in subsequent revisions.
Also:
* Move find_components() and scan_module() from app/finder.py to
utilities/modules.py
* Cleaned up lifecycle.rst for better documentation. Some tests moved to
test_lifecycle.py.
* Remove some unnecessary test tearDown() code.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
now via the RFC 2369 `list_id` instead of the fqdn listname (i.e. posting
address). This is because while the posting address can change if the
mailing list is moved to a new server, the list id is fixed.
(LP: #1024509)
+ IListManager.get_by_list_id() added.
+ IListManager.list_ids added.
+ IMailingList.list_id added.
+ Several internal APIs that accepted fqdn list names now require list ids,
e.g. ISubscriptionService.join() and .find_members().
+ IMember.list_id attribute added; .mailing_list is now an alias that
retrieves and returns the IMailingList.
- list_id added (LP: #1024509)
|
| |
|
|
|
|
|
|
|
| |
- migration.rst needs special cleanup since the Version table is no longer
wiped by the test machinery. This only caused failures when running
the migration.rst test multiple times, and only on PostgreSQL.
- Complete the removal of archive_volume_frequency and
generic_nonmember_action for PostgreSQL.
- Remove setting archive_volume_frequency in the default style.
|
| |
|
|
| |
(LP: #975696)
|
| |
|
|
| |
(LP: #1031393)
|
| |
|
|
|
|
| |
include_list_post_header -> allow_list_posts
Also add a bunch more migration tests.
|
| |\ |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
- Add explicit dependency on zope.event in setup.py.
- Use Python 3 compatible syntax for specifying that a class implements an
interface, i.e. the @implementer class decorator.
- print_function futures.
- Whitespace normalization.
|
| |/
|
|
| |
- news_moderation -> newsgroup_moderation
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
------------
* Internally, all datetimes are kept in the UTC timezone, however because of
LP: #280708, they are stored in the database in naive format.
* `received_time` is now added to the message metadata by the LMTP runner
instead of by `Switchboard.enqueue()`. This latter no longer depends on
`received_time` in the metadata.
* The `ArchiveRunner` no longer acquires a lock before it calls the
individual archiver implementations, since not all of them need a lock. If
they do, the implementations must acquire said lock themselves.
Configuration
-------------
* New configuration variables `clobber_date` and `clobber_skew` supported in
every `[archiver.<name>]` section. These are used to determine under what
circumstances a message destined for a specific archiver should have its
`Date:` header clobbered.
|
| | |
|
| |\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Configuration variable `[mailman]filtered_messages_are_preservable`
controls whether messages which have their top-level `Content-Type`
filtered out can be preserved in the `bad` queue by list owners.
* Configuration section `[scrubber]` removed, as is the scrubber handler.
This handler was essentially incompatible with Mailman 3 since it required
coordination with Pipermail to store attachments on disk.
* Schema additions:
- mailinglist.filter_action
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* Configuration variable `[mailman]filtered_messages_are_preservable`
controls whether messages which have their top-level `Content-Type`
filtered out can be preserved in the `bad` queue by list owners.
* Configuration section `[scrubber]` removed, as is the scrubber handler.
This handler was essentially incompatible with Mailman 3 since it required
coordination with Pipermail to store attachments on disk.
* Schema additions:
- mailinglist.filter_action
|
| |/
|
|
|
|
|
|
|
|
|
| |
"display_name" across the board.
* `IMailingList.real_name` -> `IMailingList.display_name`
* `IUser.real_name` -> `IUser.display_name`
* `IAddress.real_name` -> `IAddress.display_name`
* Schema changes:
- real_name -> display_name (mailinglist, user, address)
|
| |
|
|
|
|
|
|
|
|
|
| |
postings go through the `posting_chain` while messages to owners to through
`owners_chain`. The default `built-in` chain is renamed to
`default-posting-chain` while the `built-in` pipeline is renamed
`default-posting-pipeline`.
* Schema changes:
- start_chain -> posting_chain
- pipeline -> posting_pipeline
|
| |
|
|
|
|
|
|
|
|
|
|
| |
footers, using the same semantics and algorithm as for welcome and goodbye
messages.
Additional schema changes:
- msg_header -> header_uri
- msg_footer -> footer_uri
- digest_header -> digest_header_uri
- digest_footer -> digest_footer_uri
|
| |
|
|
|
|
|
|
|
|
| |
email.
Also:
- The user's Full Name is included on the To line of a welcome message.
- Clean up some tests.
- The welcome_message_uri for lists using the default style is set to
mailman:///welcome.txt so a welcome message is sent by default.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
used in welcome and goodbye messages, and supports both language and
mailing list specifications. E.g. mailman:///test@example.com/it/welc.txt
* Schema changes:
- welcome_msg -> welcome_message_uri
- goodbye_msg -> goodbye_message_uri
- send_welcome_msg -> send_welcome_message
- send_goodbye_msg -> send_goodbye_message
* New `ITemplateLoader` utility.
|
| | |
|
| |
|
|
|
|
| |
off the `mailman.config.config` object.
* Fixed bogus use of `bounce_processing` attribute (should have been
`process_bounces`, with thanks to Vincent Fretin. (LP: #876774)
|
| |
|
|
|
| |
for consistency. This changes the REST API for mailing list
resources. (LP: #787599)
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* Add an additional option for unrecognized bounce disposition: send it to the
site administrators.
* Move maybe_forward() from src/mailman/queue/bounce.py to
src/mailman/app/bounces.py, refactor and add tests.
* Add a LogFileMark class to help with tests that want to check the output to
a log file.
* OwnerNotification gets a better signature. Instead of tomoderators, the
last argument is a roster to send the notification to. If roster is None,
then the notification goes to the site administrators.
|
| |
|
|
|
|
|
|
|
| |
subscription bans so as not to have to rely on BLOBS or pickles in the
database.
Also, be sure to include .rst files in both doctests and in the packaged
tarballs. With the now awesome reST mode for Emacs, I plan to rename all .txt
doctest files to .rst.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now, nonmembers are represented by a separate roster of IMembers, the latter
which has grown a `moderation_action` enum. When that action is `defer`, then
the normal processing rules apply. Anything else and the `moderation` chain
is jumped to for a shortcut to moderation (which may include immediate
acceptance).
TODO: handle unregistered nonmembers.
Details:
* The member-moderation rule is renamed to just moderation, and handles both
members and nonmembers (though the latter must currently be registered).
* The moderation rule is moved up in the builtin chain. It is now checked
after `approved`, `emergency`, and `loop`, but before the normal moderation
checks. This means that nonmember postings will be (by default) held much
earlier.
* IMember.is_moderated is removed.
* IMember.moderation_action is added.
* IMailingList.default_member_moderation is removed.
* IMailingList.default_member_action and
IMailingList.default_nonmember_action are added.
* MemberRole.nonmember is added.
|
| |
|
|
|
| |
due to _() interpolation) and a few other problems that did not have
immediately obvious fixes.
|
| |
|
|
|
|
|
|
|
|
| |
* last_post_time -> last_post_at
* protocol -> scheme
* creation_date _> created_at
* last_post_time -> last_post_at
* Add an extended JSON encoder for datetimes
* Be sure to initialize convert_html_to_plaintext and filter_content in the
default style.
|
| |
|
|
| |
* Move DigestFrequency from mailinglist to digests.
|
| | |
|
| |
|
|
| |
package.
|
| | |
|
| | |
|
| |
|
|
|
| |
set. Make this possible by moving list_id to an attribute of the MailingList
object instead of hard-coding its calculation in cook_headers.py.
|