diff options
| author | Barry Warsaw | 2007-07-24 18:45:25 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2007-07-24 18:45:25 -0400 |
| commit | 7a7826e112a1d3f1999cb7a11e6df98cfcb712c9 (patch) | |
| tree | a4c0679185aeb4f4e482e88198b6bee8737837f2 /Mailman/interfaces/database.py | |
| parent | 8158f01c930d856b0ff892aab53cfbbcc25c85ec (diff) | |
| download | mailman-7a7826e112a1d3f1999cb7a11e6df98cfcb712c9.tar.gz mailman-7a7826e112a1d3f1999cb7a11e6df98cfcb712c9.tar.zst mailman-7a7826e112a1d3f1999cb7a11e6df98cfcb712c9.zip | |
Diffstat (limited to 'Mailman/interfaces/database.py')
| -rw-r--r-- | Mailman/interfaces/database.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Mailman/interfaces/database.py b/Mailman/interfaces/database.py new file mode 100644 index 000000000..8c57ae6b3 --- /dev/null +++ b/Mailman/interfaces/database.py @@ -0,0 +1,48 @@ +# Copyright (C) 2007 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +# USA. + +"""Interfaces for database interaction. + +By providing an object with this interface and declaring it in a package +setup.py file as an entry point in the 'mailman.database' group with the name +'initializer', you can distribute entirely different database layers for +Mailman's back end. +""" + +from zope.interface import Interface, Attribute + + + +class IDatabase(Interface): + """Database layer interface.""" + + def initialize(): + """Initialize the database layer, using whatever means necessary.""" + + def flush(): + """Flush current database changes.""" + + # XXX Eventually we probably need to support a transaction manager + # interface, e.g. begin(), commit(), abort(). We will probably also need + # to support a shutdown() method for cleanly disconnecting from the + # database.sy + + list_manager = Attribute( + """The IListManager instance provided by the database layer.""") + + user_manager = Attribute( + """The IUserManager instance provided by the database layer.""") |
