~barry/mailman/events-and-web

« back to all changes in this revision

Viewing changes to src/mailman/commands/cli_members.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:
37
37
from mailman.app.membership import add_member
38
38
from mailman.config import config
39
39
from mailman.core.i18n import _
 
40
from mailman.database.transaction import transactional
40
41
from mailman.interfaces.command import ICLISubCommand
41
42
from mailman.interfaces.listmanager import IListManager
42
43
from mailman.interfaces.member import (
177
178
            if fp is not sys.stdout:
178
179
                fp.close()
179
180
 
 
181
    @transactional
180
182
    def add_members(self, mlist, args):
181
183
        """Add the members in a file to a mailing list.
182
184
 
207
209
                except AlreadySubscribedError:
208
210
                    # It's okay if the address is already subscribed, just
209
211
                    # print a warning and continue.
210
 
                    print('Already subscribed (skipping):', 
 
212
                    print('Already subscribed (skipping):',
211
213
                          email, display_name)
212
214
        finally:
213
215
            if fp is not sys.stdin:
214
216
                fp.close()
215
 
        config.db.commit()