| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
recipients handler.
|
| |
|
|
| |
how I think about them anyway.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* 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
|
| |
|
|
| |
some new APIs I suspect.
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| | |
|
| |
|
|
| |
it exists in an `etc` directory which is a sibling of argv0.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
if they contain non-ASCII characters. (LP: #685261)
Also:
- When the registrar confirms an email address, the verified_on value gets
set using the Mailman datetime interface. This simply improves testability
for that API.
- In Runner._one_iteration(), be sure to commit the database transaction
*before* calling _short_circuit().
|
| | |
|
| | |
|
| |
|
|
|
|
| |
* Code cleanup (<> -> != ... sigh)
* Minor refactoring of database setup code so that touch() is moved to the
SQLiteDatabase class; it's not relevant for PostgreSQL.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* acquire_lock_1(): No need to unlink the tempfile
* Start.process(): Don't print error message when the lock is in stale_lock
or host_mismatch status and --force has been given.
* control.rst: Refactor test code into test_control.py.
* test_create.py: To more accurately mimic argparse, FakeParser.error() needs
to `sys.exit(1)`. The `SystemExit` must also be caught in the appropriate
tests.
* logging.py: Locking is now down by the flufl.lock package, so apply the
`mailman.lock` configuration to it.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
Also:
* Use utilities.datetime.now() so that moderation related dates are
predictable during the test suite.
* When a message is accepted, drop it in the pipeline queue. The above bug
was caused by the message going in the incoming queue, and then being
re-moderated.
* Expose mailman.bin.master.Loop in __all__.
* Add some helpful debug logging.
|
| |
|
|
|
|
|
|
|
| |
* Use zope.events to signal when a mailing list has been created or deleted.
* Register a handler for the ListDeletedEvent which cleans up member
subscriptions.
* Relax the criteria for find_members(), both internally and in the REST API,
so that the subscriber is not required. E.g. you can now find all members
of a mailing list.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Queue runners are now called just 'Runners' since several of them don't
manage queue directories.
* Ban the term 'qrunner' too.
* The master queue runner watcher should now just be called the 'master' or
the 'master runner'.
* bin/qrunner -> bin/runner
* mailman.qrunner log file -> mailman.runner
* master-qrunner.lck -> master.lck
* master-qrunner.pid -> master.pid
Also:
* Remove some obsolete files
* Begin the .txt -> .rst renaming
|
| | |
|
| |
|
|
|
|
| |
raised during the delivery function.
Modify the ReopenableFileHandler so that the filename is a public attribute.
|
| | |
|
| |\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
| |/ |
|
| |
|
|
|
| |
due to _() interpolation) and a few other problems that did not have
immediately obvious fixes.
|
| |
|
|
|
| |
REST architecture, at the expense of a few features, and less support. So far
so good though.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
multiversioned web services. In concept, that's a great idea, but in (current
as of 0.9.18) practice it sucks because it /forces/ us to adopt multiversions
when really I could care less. After gobs of painful experimentation, this
passes all the tests. I guess that means it's right <wink>.
Another, more reasonable fix is to re-order when logging is initialized. This
is moved to the start of initialize_2() because in the test environment, we
don't want to initialize the loggers until after the test configuration has
been pushed. Otherwise, because of the changes to support the FHS, logging
will go to the wrong place. This really only affects tests, since in
operational mode, initialize always happens immediately one after another.
|
| |
|
|
|
|
|
|
| |
support the Filesystem Hierarchy Standard. This is done through the
configuration file.
* add a --paths/-p option to 'bin/mailman info'
* PIDFILE -> PID_FILE
|
| | |
|
| |
|
|
|
|
| |
* delete_member(): If the address is not associated with a member, raise
NotAMemberError.
* NotAMemberError -> interfaces/member.py
|
| |
|
|
|
|
| |
* add_member() now returns the newly created IMember.
* Reorganized several exceptions and exposed them to the REST API.
* Added NoSuchListError.
|
| |
|
|
| |
files.
|
| |
|
|
| |
applications.
|
| |
|
|
|
|
|
|
| |
* Fix a few small typos in exception handlers.
* Move the initialization of the Zope Component Architecture into the first
initialization step. The only reason we couldn't do that previously was
because the domain object referenced the config, causing a circularity
problem. Refactor the Domain implementation to avoid that.
|
| |
|
|
| |
* In most human readable text, qrunner -> queue runner
|
| |
|
|
|
| |
The tests do require a partial French translation for digester.txt, so just
include the bare minimum, already msgfmt'd in the mailman.testing package.
|
| |
|
|
| |
package.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
Turn debug log level up to info so we're not spammed.
Apparently we now have to add a \n to the stream output in emit().
|
| |
|
|
|
|
| |
return an HTTP 400 error, though it does not seem to work.
Expose list creation through the API.
|
| |
|
|
|
|
|
| |
* Get rid of in-Python adapter registration in favor of ZCML. Eventually, I'd
like to get rid of the ZCML.
* Set the view_permission to None, but it's still not right.
* Add IDomainSet and an adapter from Configuration to IDomainSet.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
This lets you run a bit of Python at various stages of the initialization
process.
Move the warnings filters to the top mailman package __init__.py so you always
get it. lazr.restful is too chatty.
The environment variable $MAILMAN_CONFIG_FILE now overrides -C. Hmm, I think
we really want it the original way.
|
| | |
|
| |
|
|
|
|
|
| |
Add infrastructure that the first REST interface will use, i.e. providing the
Mailman and Python versions.
Update bin/version
|
| |
|
|
|
|
|
|
| |
Refactor the finding of components so that it's much easier to find and
register the ones that come with Mailman by default.
Move all the old cmd_*.py commands into the attic. These will eventually be
ported to the new framework.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
database class in the configuration file.
|