diff options
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.""") |
