~barry/mailman/events-and-web

« back to all changes in this revision

Viewing changes to src/mailman/model/message.py

  • Committer: Barry Warsaw
  • Date: 2012-04-22 21:33:33 UTC
  • mfrom: (7150.1.11 transactions)
  • Revision ID: barry@list.org-20120422213333-3skjqsjktooesgsl
Several non-functional improvements to the code base.

Reduce the explicit use of the config.db global by introducing two new
helpers:
 - A new transaction() context manager which will commit the transaction on
   successful exit, otherwise it will abort the transaction
 - A new dbconnection decorator which calls the decorated method with the
   Storm store object as the first argument (after self).  This can be used
   instead of config.db.store.

By reducing the explicit use of this global, we have a better chance of
refactoring it away in the future.  Still TODO: runner.py and lmtp.py.

Be explicit about the `store` attribute on the IDatabase interface.

More consistent use of __future__ imports.

Remove an obsolete command line script.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
"""Model for messages."""
19
19
 
20
 
 
21
 
from __future__ import absolute_import, unicode_literals
 
20
from __future__ import absolute_import, print_function, unicode_literals
22
21
 
23
22
__metaclass__ = type
24
23
__all__ = [
28
27
from storm.locals import AutoReload, Int, RawStr, Unicode
29
28
from zope.interface import implements
30
29
 
31
 
from mailman.config import config
32
30
from mailman.database.model import Model
 
31
from mailman.database.transaction import dbconnection
33
32
from mailman.interfaces.messages import IMessage
34
33
 
35
34
 
45
44
    path = RawStr()
46
45
    # This is a Messge-ID field representation, not a database row id.
47
46
 
48
 
    def __init__(self, message_id, message_id_hash, path):
 
47
    @dbconnection
 
48
    def __init__(self, store, message_id, message_id_hash, path):
49
49
        super(Message, self).__init__()
50
50
        self.message_id = message_id
51
51
        self.message_id_hash = message_id_hash
52
52
        self.path = path
53
 
        config.db.store.add(self)
 
53
        store.add(self)