util.py 1.55 KB
Newer Older
1 2 3 4 5 6
##############################################################################
#
# Copyright (c) 2004 Zope Corporation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
Jim Fulton's avatar
Jim Fulton committed
7
# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
8 9 10 11 12 13 14 15
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE.
#
##############################################################################
"""Utility classes or functions

16
$Id$
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
"""

from transaction.interfaces import IRollback

try:
    from zope.interface import implements
except ImportError:
    def implements(*args):
        pass

class NoSavepointSupportRollback:
    """Rollback for data managers that don't support savepoints

    >>> class DataManager:
    ...     def savepoint(self, txn):
    ...         return NoSavepointSupportRollback(self)
    >>> rb = DataManager().savepoint('some transaction')
    >>> rb.rollback()
    Traceback (most recent call last):
    ...
    NotImplementedError: """ \
           """DataManager data managers do not support """ \
           """savepoints (aka subtransactions
Tim Peters's avatar
Tim Peters committed
40

41 42 43 44 45 46 47 48 49 50 51
    """

    implements(IRollback)

    def __init__(self, dm):
        self.dm = dm.__class__.__name__

    def rollback(self):
        raise NotImplementedError(
            "%s data managers do not support savepoints (aka subtransactions"
            % self.dm)