| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
Closes #214
|
| | |
|
| | |
|
| |
|
|
|
| |
Also require docutils==0.12 to work around
https://github.com/sphinx-doc/sphinx/issues/3212
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This merges the SubscriptionManager and UnsubscriptionManager into a
single SubscriptionManager implementation that handles both register()
and unregister(). This allows us to use direct class-based adaptation
instead of the more clunky getAdapter() API. We can also eliminate the
funky _get_workflow() implementation detail.
This has a couple of side-effects. .confirm() must lookup the token in
the pendings database and pull out the pending type, dispatching to the
proper class depending on the type, or raising a LookupError if the
token is None or there is no pendable associated with the given token.
This feels like an acceptable trade-off.
However, this *also* means that IWorkflowStateManager must lose its
'name' argument in its methods. That's because we won't actually know
the name until its too late. Honestly, the name wasn't providing much
value anyway (it was always the subclass's name), so losing that seems
fine too. The complication here is that the name was a primary key in
the 'workflowstate' table, so we need to add its removal in the database
migration.
|
| |
|
|
| |
Given by Abhilash Raj.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This commits builds upon the mailman.utilities.uid.UniqueIDFactory to
generate predictable tokens when the testing mode is activated. This
will make VCR tapes more diffable between runs.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
- Pendable.token: queried in the add() and confirm() methods
- Pendable.expiration_date: queried on evict()
- PendableKeyValue.key and PendableKeyValue.value: queried in the find()
method
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |\
| |
| |
| |
| |
| | |
It now properly supports email verification and subscription confirmation
by the user, and approval by the moderator using unique tokens.
``IMailingList`` objects now have a ``subscription_policy`` attribute.
|
| |/ |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
NOTE NOTE NOTE: This is a potential upgrade issue. The values in the pending
database used to be either custom pickle-like objects or actual pickles. Now
all values are JSON representations.
|
| |
|
|
| |
Unicode columns.
|
| |
|
|
|
|
|
|
| |
* remove alembic.cfg, move contents to schema.cfg
* fix import errors in src/mailman/model/language.py
* add indexes
* change the previously wrong written tablename autoresponserecord
* change alembic_cfg to use schema.cfg instead of alembic.cfg
|
| |
|
|
|
|
|
|
|
| |
* revert changes in message_id_has encoding by barry
* Change message_id_hash column to LargeBinary
(from previously mistaken one i.e.unicode)
* add missing import in database/types.py
* fix a bug in database/Model.py, transaction has no
method abort(), instead it is rollback()
|
| |
|
|
|
|
|
|
|
|
| |
* Switch away from a deprecated unittest method.
* Switch away from using deprecated Exceptions.message attribute.
* Decode the bytes b32 encoded X-Message-ID-Hash header into a Unicode.
* Fix a rather glaring bug in Pendings.add() where we were actually not
properly coercing bytes to unicode for the keys and values! I guess it's a
good thing that SQLAlchemy is more strict than Storm.
* Some cosmetic fixes.
|
| | |
|
| |
|
|
|
|
|
| |
* add left out documentation
* remov super(<class>).__init__() calls in models
as it was useless now.
* remove schema_migrate func in mailman/database/base.py
|
| | |
|
| |
|
|
| |
* update some queries to match SA style
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
- 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.
|
| |
|
|
| |
- Convert direct use of config.db global to use the @dbconnection decorator.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
------------
* 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.
|
| | |
|
| | |
|
| |
|
|
|
| |
due to _() interpolation) and a few other problems that did not have
immediately obvious fixes.
|
| | |
|
| |
|
|
|
|
|
|
| |
* Give IMailingList a .domain attribute which looks up the IDomain for its
.host_name. This cleans up a lot of code.
* Add a test for the 'confirm' email command.
* Suppress blank lines in email command responses.
* Make the IDomainCollection a utility.
|
|
|
database support goes in mailman.database. Move stuff out of
mailman/database/__init__.py.
|