summaryrefslogtreecommitdiff
path: root/src/mailman/styles/default.py
Commit message (Collapse)AuthorAgeFilesLines
* Add description attribute to IStyle, expose it in REST.J08nY2017-08-071-0/+3
|
* Bump copyright years.Barry Warsaw2017-01-041-1/+1
|
* Use `atpublic` for @public instead of internal copy.Barry Warsaw2016-11-291-1/+1
|
* Clean up the styles directory.Barry Warsaw2016-03-251-7/+3
|
* Happy New Year.Barry Warsaw2016-01-021-1/+1
|
* Bump copyright years.Barry Warsaw2015-01-041-1/+1
|
* Remove huge amounts of now unnecessary file boilerplate.Barry Warsaw2014-12-221-5/+1
|
* Bump copyright years.Barry Warsaw2014-01-011-1/+1
|
* Bump copyright years.Barry Warsaw2013-01-011-1/+1
|
* * The default list style is renamed to `legacy-default` and a newBarry Warsaw2012-12-301-174/+34
| | | | | | | | `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.
* Remove mailinglist.admin_member_chunksize.Barry Warsaw2012-12-301-1/+0
|
* Remove mailinglist.private_roster.Barry Warsaw2012-12-301-1/+0
|
* Remove unused columns mailinglist.subscribe_policy,Barry Warsaw2012-12-301-3/+0
| | | | mailinglist.unsubscribe_policy, mailinglist.subscribe_auto_approval.
* Remove mailinglist.send_reminders column too.Barry Warsaw2012-12-301-1/+0
|
* * The column `mailinglist.new_member_options` was unused, and has beenBarry Warsaw2012-12-301-1/+0
| | | | removed.
* Revert the addition of the mailinglist.style_name column, as well as theBarry Warsaw2012-12-291-1/+0
| | | | | | | | | | | | 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.
* LP: #975692 phase 1Barry Warsaw2012-12-281-7/+1
| | | | | | | | | | | | | | | | | * 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.
* * The link between members and the mailing lists they are subscribed to, isBarry Warsaw2012-09-041-1/+0
| | | | | | | | | | | | | | | 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)
* A few fixes for schema migration on PostgreSQL.Barry Warsaw2012-08-201-1/+0
| | | | | | | | | - 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.
* * Removed obsolete `IMailingList` attribute `generic_nonmember_action.Barry Warsaw2012-08-191-1/+0
| | | | (LP: #975696)
* * Fix residual references to the old `IMailingList` archive variables.Barry Warsaw2012-08-181-2/+2
| | | | (LP: #1031393)
* Working for SQLite:Barry Warsaw2012-07-251-1/+1
| | | | | | include_list_post_header -> allow_list_posts Also add a bunch more migration tests.
* trunk mergeBarry Warsaw2012-07-061-5/+4
|\
| * False rather than 0Barry Warsaw2012-05-091-1/+1
| |
| * General code cleanup.Barry Warsaw2012-04-251-4/+3
| | | | | | | | | | | | | | | | - 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.
* | - Rename the model attributes.Barry Warsaw2012-04-081-3/+3
|/ | | | - news_moderation -> newsgroup_moderation
* ArchitectureBarry Warsaw2012-03-261-6/+4
| | | | | | | | | | | | | | | | | | | ------------ * 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.
* Add the OwnerPipeline, with tests, and rename some things for consistency.Barry Warsaw2012-03-231-0/+5
|
* Merge the Pipermail eradication branch. The scrubber is also removed.Barry Warsaw2012-03-171-1/+2
|\ | | | | | | | | | | | | | | | | | | | | | | * 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
| * * Pipermail has been eradicated.Barry Warsaw2012-03-161-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | * 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
* | Schema change. After discussion at Pycon, we decided to change "real_name" toBarry Warsaw2012-03-151-2/+2
|/ | | | | | | | | | | "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)
* * Mailing lists get multiple chains and pipelines. For example, normalBarry Warsaw2012-03-071-4/+5
| | | | | | | | | | | 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
* Template indirection now also in effect for regular and digest headers andBarry Warsaw2012-03-041-14/+5
| | | | | | | | | | | | 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
* * A welcome message is sent when the user confirms their subscription viaBarry Warsaw2012-03-041-1/+1
| | | | | | | | | | 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.
* * Support downloading templates by URI, including mailman:// URIs. This isBarry Warsaw2012-03-031-4/+4
| | | | | | | | | | | | | 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.
* copybumpBarry Warsaw2012-01-011-1/+1
|
* * Implement the style manager as a utility instead of an attribute hangingBarry Warsaw2011-10-241-1/+1
| | | | | | 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)
* * The IMailingList attribute ``host_name`` has been renamed to ``mail_host``Barry Warsaw2011-06-161-1/+1
| | | | | for consistency. This changes the REST API for mailing list resources. (LP: #787599)
* * bounce_unrecognized_goes_to_list_owner -> forward_unrecognized_bounces_to Barry Warsaw2011-05-251-1/+4
| | | | | | | | | | | | * 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.
* Eliminate Utils.get_pattern() and in the process, completely revampBarry Warsaw2011-02-251-2/+0
| | | | | | | | | 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.
* Happy New Year.Barry Warsaw2011-01-011-1/+1
|
* Fairly significant change to the way member and nonmember moderation occurs.Barry Warsaw2010-12-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Fix the obvious errors identified by pyflakes. Skip false positives (mostlyBarry Warsaw2010-10-081-1/+0
| | | | | due to _() interpolation) and a few other problems that did not have immediately obvious fixes.
* Access mailing list configuration via RESTBarry Warsaw2010-08-101-0/+2
| | | | | | | | | | * 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.
* * A start to import of Mailman 2.1 config.pck files.Barry Warsaw2010-04-051-2/+2
| | | | * Move DigestFrequency from mailinglist to digests.
* Happy New Year.Barry Warsaw2010-01-011-1/+1
|
* Factor out most of the i18n subsystem and convert to using the flufl.i18nBarry Warsaw2009-11-151-1/+1
| | | | package.
* De-u-literal-ify our doctests.Barry Warsaw2009-07-181-1/+1
|
* Move the Action and NewsModeration enums into their own interface files.Barry Warsaw2009-03-251-1/+2
|
* There are some situations where the RFC 2919 List-ID header must be explicitlyBarry Warsaw2009-03-031-4/+5
| | | | | 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.