summaryrefslogtreecommitdiff
path: root/src/mailman/model/mailinglist.py
Commit message (Collapse)AuthorAgeFilesLines
...
| * * change declarative_base class to use ModelMeta classAbhilash Raj2014-09-061-9/+14
| | | | | | | | * update some queries to match SA style
| * replace all storm types and relationships with sqlalchemyAbhilash Raj2014-09-051-17/+15
| |
| * change models to use sqlalchemy models<WIP>Abhilash Raj2014-09-041-102/+105
|/
* Trunk mergeBarry Warsaw2014-04-141-3/+69
|\
| * Bump copyright years.Barry Warsaw2014-01-011-1/+1
| |
| * Checkpointing.Barry Warsaw2013-11-251-46/+61
| |
| * Changes for enabling/disabling archivers.Joanna Skrzeszewska2013-09-081-4/+55
| |
* | Aurélien Bompard's import-from-2.1 branch, with cleanup and fixes.Barry Warsaw2014-04-141-0/+1
|/
* Bump copyright years.Barry Warsaw2013-01-011-1/+1
|
* 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-2/+0
| | | | removed.
* Remove some leftovers.Barry Warsaw2012-12-291-3/+0
|
* Revert the addition of the mailinglist.style_name column, as well as theBarry Warsaw2012-12-291-4/+3
| | | | | | | | | | | | 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-0/+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.
* * Two new events are triggered on membership changes: `SubscriptionEvent`Barry Warsaw2012-12-231-1/+4
| | | | | when a new member joins a mailing list, and an `UnsubscriptionEvent` when a member leaves a mailing list. (LP: #1047286)
* * The link between members and the mailing lists they are subscribed to, isBarry Warsaw2012-09-041-3/+10
| | | | | | | | | | | | | | | 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)
* * Removed obsolete `IMailingList` attribute `generic_nonmember_action.Barry Warsaw2012-08-191-1/+0
| | | | (LP: #975696)
* 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/+9
|\
| * General code cleanup.Barry Warsaw2012-04-251-5/+9
| | | | | | | | | | | | | | | | - 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-7/+5
|/ | | | - news_moderation -> newsgroup_moderation
* * A mailing list's *moderator password* is no longer stored in the clear; itBarry Warsaw2012-04-041-3/+3
| | | | | | | | | | | is hashed with the currently selected scheme. Also: - Simplify and rewrite the approved.rst doctest. Now just document the good path, and only describe its functionality using the Approved: header, which is the recommended header. - Greatly expand the unittests for the approved rule.
* Add an owner chain and pipeline to the schema, model, and interface. PlumbBarry Warsaw2012-03-221-0/+2
| | | | this through the incoming runner.
* 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-2/+2
| | | | | | | | | | | 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-4/+4
| | | | | | | | | | | | 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
* * 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.
* Storm now has a "load hook" which we can use to restore the rosters when theBarry Warsaw2012-01-271-3/+6
| | | | | MailingList is loaded from the database. We need to call this explicitly in the constructor, but at least nothing else will ever need to call it.
* copybumpBarry Warsaw2012-01-011-1/+1
|
* * Stop adding the X-BeenThere header.Barry Warsaw2011-11-061-1/+0
| | | | | | | * Separate out the RFC 2369 header adding handler. * Dynamically calculate the `List-Id` header instead of storing it in the database. This means it cannot be changed. * Be sure to clean out any digest .mmdf files when the world is reset.
* Improved the way flufl.enum.Enums are stored in the database. Now, theyBarry Warsaw2011-09-231-11/+17
| | | | | | | | should always be stored as INTEGER columns, with the enum class explicitly described in the code. This should be more efficient, and besides EIBTI. Also, filled in a few additional IMailingList attributes which were not documented in the interface.
* * The IMailingList attribute ``host_name`` has been renamed to ``mail_host``Barry Warsaw2011-06-161-13/+13
| | | | | for consistency. This changes the REST API for mailing list resources. (LP: #787599)
* * bounce_processing -> process_bouncesBarry Warsaw2011-05-271-1/+1
| | | | | * Finally get rid of BounceMixin * Test the simple case where the mailing list does no bounce processing.
* * bounce_unrecognized_goes_to_list_owner -> forward_unrecognized_bounces_to Barry Warsaw2011-05-251-1/+2
| | | | | | | | | | | | * 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.
* * Fixed testsBarry Warsaw2011-05-141-1/+1
| | | | * Fix obvious typo in __init__(). How can we get Storm to help us with this?
* Users subscribed to a mailing list via their preferred address show upBarry Warsaw2011-04-221-1/+4
| | | | | correctly in the REST API's list of members. This even correctly tracks changes in their preferred address.
* Users can now subscribe to a mailing list, and their preferred address willBarry Warsaw2011-04-171-10/+24
| | | | get delivery.
* Refactor .subscribe() from IAddress to IMailingList.Barry Warsaw2011-04-161-1/+21
|
* Eliminate Utils.get_pattern() and in the process, completely revampBarry Warsaw2011-02-251-2/+1
| | | | | | | | | 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/+3
| | | | | | | | | | | | | | | | | | | | | | | | | 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.
* This is part 1 of the merge of Jimmy Bergman's branchBarry Warsaw2010-12-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | lp:~jimmy-sigint/mailman/restapi_additional_attributes Ostensibly, this adds support for a few additional attributes through the REST API: * default_member_moderation * generic_nonmember_action * member_moderation_action * reply_goes_to_list * send_welcome_msg * welcome_msg However, I had never previously fleshed out the conversion of default_member_moderation and member_moderation_action into the MM3 way of things. That is now done. Non-member moderation still needs to be done. Specific changes: * mailman.chains.base.Chain no longer self registers * The built-in chain gets a new link for checking 'member-moderation'. If this rule matches, it jumps to the 'member-moderation' chain, which checks member_moderation_action and returns a link that jumps to the appropriate terminal chain. * Chain initialization is done by the same auto-detection as rules, handlers, etc. The one tricky thing is that abstract base classes such as Chain and TerminalChainBase can't be instantiated. For now, there's an ugly special case to skip these. * default_member_moderation is now exposed in the IMailingList interface. * Member.is_moderated gets set in the constructor from the mailing list's default_member_moderation. * The 'moderation' rule is renamed 'member-moderation'. TODO: * Work out non-member moderation * Add member_moderation_action to IMailingList * Double check tests for reply_goes_to_list, send_welcome_msg, and welcome_msg
* Expose description in the interface and REST API.Barry Warsaw2010-08-121-11/+11
|
* Expose the autoreponse values in the IMailingList interface and REST API.Barry Warsaw2010-08-121-3/+3
|
* Expose anonymous_list and advertised in the IMailingList interface and in ↵Barry Warsaw2010-08-111-2/+2
| | | | the configuration REST API.