[Checkins] SVN: z3c.zalchemy/trunk/ Merged changes for compatibility with SQLAlchemy 0.4 from darryl's branch.

Christian Theune ct at gocept.com
Fri Dec 28 05:34:52 EST 2007


Log message for revision 82475:
  Merged changes for compatibility with SQLAlchemy 0.4 from darryl's branch.
  
  Made a minor adjustment to the TRANSACTION.txt tests because an exception
  representation changed in SQLAlchemy.
  
  Simplified setup.py/buildout.cfg a bit
  --This line, and those below, will be ignored--
  
  M    buildout.cfg
  M    CHANGES.txt
  M    src/z3c/zalchemy/demo/demo_1/message.py
  M    src/z3c/zalchemy/demo/demo_2/message.py
  M    src/z3c/zalchemy/demo/demo_3/message.py
  M    src/z3c/zalchemy/demo/demo_4/message.py
  M    src/z3c/zalchemy/datamanager.py
  M    src/z3c/zalchemy/tests/TRANSACTION.txt
  M    src/z3c/zalchemy/tests/environ.py
  M    src/z3c/zalchemy/tests/test_container.py
  M    src/z3c/zalchemy/intid/keyreference.txt
  M    src/z3c/zalchemy/intid/keyreference.py
  M    src/z3c/zalchemy/container.py
  M    src/z3c/zalchemy/README.txt
  M    setup.py
  

Changed:
  U   z3c.zalchemy/trunk/CHANGES.txt
  U   z3c.zalchemy/trunk/buildout.cfg
  U   z3c.zalchemy/trunk/setup.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/README.txt
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/container.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_1/message.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_2/message.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_3/message.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_4/message.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.txt
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/tests/TRANSACTION.txt
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/tests/environ.py
  U   z3c.zalchemy/trunk/src/z3c/zalchemy/tests/test_container.py

-=-
Modified: z3c.zalchemy/trunk/CHANGES.txt
===================================================================
--- z3c.zalchemy/trunk/CHANGES.txt	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/CHANGES.txt	2007-12-28 10:34:52 UTC (rev 82475)
@@ -2,9 +2,13 @@
 Changes
 =======
 
-0.2.2 - unreleased
+0.3 - (unreleased)
 ==================
 
+  - Updated to SQLAlchmy 0.4 compatibility. `z3c.zalchemy` now requires
+    SQLAlchemy 0.4
+
+
 0.2.1 - 2007-11-13 
 ==================
 

Modified: z3c.zalchemy/trunk/buildout.cfg
===================================================================
--- z3c.zalchemy/trunk/buildout.cfg	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/buildout.cfg	2007-12-28 10:34:52 UTC (rev 82475)
@@ -1,9 +1,7 @@
 [buildout]
 parts = test
 develop = .
-find-links = http://download.zope.org/distribution
 
 [test]
 recipe = zc.recipe.testrunner
 eggs = z3c.zalchemy [test]
-

Modified: z3c.zalchemy/trunk/setup.py
===================================================================
--- z3c.zalchemy/trunk/setup.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/setup.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -2,7 +2,7 @@
 from setuptools import setup, find_packages
 
 setup(name='z3c.zalchemy',
-      version='0.2.2dev',
+      version='0.3dev',
       author='Juergen Kartnaller and the Zope Community',
       author_email='zope3-dev at zope.org',
       url='http://pypi.python.org/pypi/z3c.sqlalchemy',
@@ -20,7 +20,7 @@
       include_package_data = True,
       zip_safe=False,
       install_requires=['setuptools',
-                        'SQLAlchemy>=0.3.9,<0.4dev',
+                        'SQLAlchemy>=0.4',
                         'ZODB3',
                         'zope.component',
                         'zope.interface',

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/README.txt
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/README.txt	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/README.txt	2007-12-28 10:34:52 UTC (rev 82475)
@@ -66,6 +66,7 @@
 need to call z3c.zalchemy.metadata.
 
   >>> import sqlalchemy
+  >>> import sqlalchemy.orm
   >>> import z3c.zalchemy
   >>> table3 = sqlalchemy.Table(
   ...     'table3',
@@ -82,7 +83,7 @@
 
 Now we map the table to our class.
 
-  >>> sqlalchemy.mapper(A, table3) is not None
+  >>> sqlalchemy.orm.mapper(A, table3) is not None
   True
 
 To let zalchemy do its work we need to register our database utility.
@@ -104,7 +105,12 @@
 
   >>> a = A()
   >>> a.value = 1
+  >>> from z3c.zalchemy.datamanager import getSession as session
 
+Save the object in the session.
+
+  >>> session().save(a)
+
 Committing a transaction will automatically trigger a flush and clear the
 session.
 
@@ -114,7 +120,6 @@
 Now let's try to get the object back in a new transaction (we're in a new
 transaction already because the old transaction was committed):
 
-  >>> from z3c.zalchemy.datamanager import getSession as session
   >>> a = session().get(A, 1)
   >>> a.value
   1
@@ -156,7 +161,7 @@
 
   >>> class B(object):
   ...     pass
-  >>> B.mapper = sqlalchemy.mapper(B, bTable)
+  >>> B.mapper = sqlalchemy.orm.mapper(B, bTable)
 
 Assign bTable to the new engine and create the table.
 This time we do it inside of a session.
@@ -166,6 +171,7 @@
 
   >>> b = B()
   >>> b.value = 'b1'
+  >>> session().save(b)
 
   >>> a = A()
   >>> a.value = 321
@@ -183,7 +189,7 @@
 
   >>> class Aa(object):
   ...     pass
-  >>> sqlalchemy.mapper(Aa, table3) is not None
+  >>> sqlalchemy.orm.mapper(Aa, table3) is not None
   True
 
 Now we can assign the class to the engine :

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/container.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/container.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/container.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -110,7 +110,7 @@
     def items(self):
         session = z3c.zalchemy.getSession()
         query = session.query(self._class)
-        for obj in query.select():
+        for obj in query.all():
             name = self._toStringIdentifier(obj)
             yield (name, contained(obj, self, name) )
 
@@ -127,7 +127,7 @@
             return self[name]
         except KeyError:
             return default
-    
+
     def __contains__(self, name):
         return self.get(name) is not None
 
@@ -153,9 +153,8 @@
         session.flush()
 
     def _toStringIdentifier(self, obj):
-        session = z3c.zalchemy.getSession()
-        mapper = session.mapper(obj.__class__)
-        instance_key = mapper.instance_key(obj)
+        mapper = sqlalchemy.orm.class_mapper(obj.__class__)
+        instance_key = mapper.identity_key_from_instance(obj)
         ident = '-'.join(map(str, instance_key[1]))
         return '%s-%s'%(instance_key[0].__name__, ident)
 

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/datamanager.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -24,10 +24,11 @@
 import z3c.zalchemy.interfaces
 
 import sqlalchemy
+import sqlalchemy.orm
 from sqlalchemy.orm.mapper import global_extensions
-from sqlalchemy.ext.sessioncontext import SessionContext
-from sqlalchemy.orm.session import Session
 
+from sqlalchemy.orm import scoped_session, sessionmaker
+
 class AlchemyEngineUtility(persistent.Persistent):
     """A utility providing a database engine.
     """
@@ -85,7 +86,7 @@
     if util is None:
         raise ValueError("No engine utility registered")
     engine = util.getEngine()
-    session = sqlalchemy.create_session(bind_to=engine)
+    session = SessionFactory(bind=engine)
 
     # This session is now only bound to the default engine. We need to bind
     # the other explicitly bound tables and classes as well.
@@ -94,7 +95,10 @@
     transaction.get().join(AlchemyDataManager(session))
     return session
 
+SessionFactory = sessionmaker(autoflush=True, transactional=True)
+Session = scoped_session(createSession)
 
+
 def bind_session(session):
     """Applies all table and class bindings to the given session."""
     for table, engine in _tableToEngine.items():
@@ -103,12 +107,8 @@
         _assignClass(class_, engine, session)
 
 
-ctx = SessionContext(createSession)
-global_extensions.append(ctx.mapper_extension)
-
-
 def getSession():
-    return ctx.current
+    return Session()
 
 
 def getEngineForTable(t):
@@ -156,7 +156,7 @@
     util = getUtility(z3c.zalchemy.interfaces.IAlchemyEngineUtility,
                       name=engine)
     if session is None:
-            session = ctx.current
+            session = Session()
     session.bind_table(t, util.getEngine())
 
 
@@ -165,7 +165,7 @@
     util = getUtility(z3c.zalchemy.interfaces.IAlchemyEngineUtility,
                       name=engine)
     if session is None:
-        session = ctx.current
+        session = Session()
     session.bind_mapper(m,util.getEngine())
 
 
@@ -203,27 +203,26 @@
 
     def __init__(self, session):
         self.session = session
-        self.transaction = session.create_transaction()
 
     def abort(self, trans):
-        self.transaction.rollback()
+        self.session.rollback()
         self._cleanup()
 
-    def tpc_begin(self, trans):
-        pass
-
     def commit(self, trans):
         self._flush_session()
 
+    def tpc_begin(self, trans):
+        pass
+
     def tpc_vote(self, trans):
         pass
 
     def tpc_finish(self, trans):
-        self.transaction.commit()
+        self.session.commit()
         self._cleanup()
 
     def tpc_abort(self, trans):
-        self.transaction.rollback()
+        self.session.rollback()
         self._cleanup()
 
     def sortKey(self):
@@ -234,8 +233,7 @@
         return AlchemySavepoint()
 
     def _cleanup(self):
-        self.session.clear()
-        del ctx.current
+        Session.remove()
 
     def _flush_session(self):
         try:

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_1/message.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_1/message.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_1/message.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -1,11 +1,14 @@
 import sqlalchemy
-import z3c.zalchemy
+import sqlalchemy.orm
+
+from zope.component.factory import Factory
 from zope.interface import implements
 from zope.schema.fieldproperty import FieldProperty
 
+import z3c.zalchemy
+
 from interfaces import IHelloWorldMessage
 
-from zope.component.factory import Factory
 
 # Define and create the table object for storing messages
 HelloWorldMessageTable = sqlalchemy.Table(
@@ -31,7 +34,7 @@
 
 
 # Map the table to the class
-sqlalchemy.mapper(HelloWorldMessage, HelloWorldMessageTable)
+sqlalchemy.orm.mapper(HelloWorldMessage, HelloWorldMessageTable)
 
 messageFactory=Factory(
     HelloWorldMessage,

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_2/message.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_2/message.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_2/message.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -1,12 +1,13 @@
 import sqlalchemy
-import z3c.zalchemy
+import sqlalchemy.orm
 
+from zope.component.factory import Factory
 from zope.interface import implements
 from zope.schema.fieldproperty import FieldProperty
 
+import z3c.zalchemy
 from interfaces import IHelloWorldMessage2
 
-from zope.component.factory import Factory
 
 # define and create the RDBMS table for storing messages
 HelloWorldMessageTable2 = sqlalchemy.Table(
@@ -29,7 +30,7 @@
         self.who = who
 
 # Map the message class to the message table
-messagemapper = sqlalchemy.mapper(HelloWorldMessage2, HelloWorldMessageTable2)
+messagemapper = sqlalchemy.orm.mapper(HelloWorldMessage2, HelloWorldMessageTable2)
 
 messageFactory=Factory(
     HelloWorldMessage2,

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_3/message.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_3/message.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_3/message.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -1,6 +1,7 @@
 from datetime import datetime
 
 import sqlalchemy
+import sqlalchemy.orm
 
 import z3c.zalchemy
 
@@ -66,7 +67,7 @@
             self.modified = modified
 
 # Map the metadata table to the metadata class
-relationalmapper = sqlalchemy.mapper(RelationalDC, RelationalDCTable)
+relationalmapper = sqlalchemy.orm.mapper(RelationalDC, RelationalDCTable)
 
 # The class defining the adapter between the message object and the
 # IZopeDublinCore interface.
@@ -112,8 +113,8 @@
         
     description = property(getDescription, setDescription,
                            doc="RelationalDC description")
-                           
-                           
+
+
 # The class defining the message object
 class HelloWorldMessage3(object):
     implements(IHelloWorldMessage3)
@@ -128,10 +129,10 @@
         
 
 # map the message class to the message table
-messagemapper = sqlalchemy.mapper(HelloWorldMessage3, HelloWorldMessageTable3)
+messagemapper = sqlalchemy.orm.mapper(HelloWorldMessage3, HelloWorldMessageTable3)
 # add an additional property to the message mapper that maps
 # to the metadata class
-messagemapper.add_property('rdc', sqlalchemy.relation(RelationalDC,
+messagemapper.add_property('rdc', sqlalchemy.orm.relation(RelationalDC,
                                                       cascade="all"))
 
 messageFactory=Factory(

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_4/message.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_4/message.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/demo/demo_4/message.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -1,6 +1,7 @@
 from datetime import datetime
 
 import sqlalchemy
+import sqlalchemy.orm
 
 import z3c.zalchemy
 from z3c.zalchemy.container import contained
@@ -57,7 +58,7 @@
 
 
 class RelationalDC(object):
-    
+
     creators = FieldProperty(IZopeDublinCore['creators'])
     title = FieldProperty(IZopeDublinCore['title'])
     description = FieldProperty(IZopeDublinCore['description'])
@@ -78,9 +79,9 @@
         else:
             self.modified = modified
 
-            
-relationalmapper = sqlalchemy.mapper(RelationalDC, RelationalDCTable)
 
+relationalmapper = sqlalchemy.orm.mapper(RelationalDC, RelationalDCTable)
+
 class RelationalDCAdapter(object):
     adapts(IHelloWorldMessage4)
     implements(IZopeDublinCore)
@@ -120,7 +121,6 @@
         
     description = property(getDescription, setDescription,
                            doc="RelationalDC description")
-                           
 
 
 class HelloWorldFragment(Contained):
@@ -131,7 +131,7 @@
     def __init__(self, what):
         self.what = what
 
-fragmentmapper = sqlalchemy.mapper(HelloWorldFragment, HelloWorldFragmentTable)
+fragmentmapper = sqlalchemy.orm.mapper(HelloWorldFragment, HelloWorldFragmentTable)
 
 
 class HelloWorldMessage4(Contained):
@@ -210,11 +210,11 @@
         return session.query(HelloWorldFragment).get_by(id=ident)
 
 
-messagemapper = sqlalchemy.mapper(HelloWorldMessage4, HelloWorldMessageTable4)
-messagemapper.add_property('rdc', sqlalchemy.relation(RelationalDC,
+messagemapper = sqlalchemy.orm.mapper(HelloWorldMessage4, HelloWorldMessageTable4)
+messagemapper.add_property('rdc', sqlalchemy.orm.relation(RelationalDC,
                                                       cascade="all"))
 messagemapper.add_property('fragments',
-                           sqlalchemy.relation(HelloWorldFragment,
+                           sqlalchemy.orm.relation(HelloWorldFragment,
                                                cascade="all"))
 
 messageFactory=Factory(

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -23,11 +23,15 @@
 from z3c.zalchemy.interfaces import ISQLAlchemyObject
 import z3c.zalchemy
 
+import sqlalchemy.orm
+
+
 class RefToSQLAlchemyObject(object):
-    
     """An IKeyReference for objects stored in an sql database by
-    zalchemy whith a mapper attached to the class"""
-    
+    zalchemy whith a mapper attached to the class.
+
+    """
+
     interface.implements(zope.app.keyreference.interfaces.IKeyReference)
     component.adapts(ISQLAlchemyObject)
 
@@ -35,18 +39,17 @@
 
     def __init__(self, object):
         object =  removeSecurityProxy(object)
-        session = z3c.zalchemy.getSession()
-        mapper = session.mapper(object.__class__)
-        self.ident = mapper.instance_key(object)[:2]
-        self._class,self.pk = self.ident
-        
+        mapper = sqlalchemy.orm.class_mapper(object.__class__)
+        self.ident = mapper.identity_key_from_instance(object)[:2]
+        self._class, self.pk = self.ident
+
     def __call__(self):
         session = z3c.zalchemy.getSession()
-        return session.get(self._class,self.pk)
+        return session.get(self._class, self.pk)
 
     def __hash__(self):
         return hash(self.ident)
-    
+
     def __cmp__(self, other):
         if self.key_type_id == other.key_type_id:
             return cmp(self.ident,other.ident)

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.txt
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.txt	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/intid/keyreference.txt	2007-12-28 10:34:52 UTC (rev 82475)
@@ -9,10 +9,10 @@
   >>> from z3c.zalchemy.intid.keyreference import RefToSQLAlchemyObject
   >>> component.provideAdapter(RefToSQLAlchemyObject)
 
-
 Let's create a simple mapper and an according class.
 
   >>> import sqlalchemy
+  >>> import sqlalchemy.orm
   >>> import z3c.zalchemy
   >>> aTable = sqlalchemy.Table(
   ...     'aTable',z3c.zalchemy.metadata(),
@@ -27,9 +27,9 @@
   >>> class A(object):
   ...     interface.implements(ISQLAlchemyObject)
   ...     pass
-  >>> sqlalchemy.mapper(A, aTable) is not None
+  >>> sqlalchemy.orm.mapper(A, aTable) is not None
   True
-  
+
   >>> z3c.zalchemy.createTable('aTable', '')
 
 Start a transaction.
@@ -38,13 +38,11 @@
   >>> txn = transaction.begin()
   >>> session = z3c.zalchemy.getSession()
 
-
   >>> a = A()
   >>> session.save(a)
   >>> a.id = 1
   >>> a.value = 1
 
-
 Now let us create a reference to the object
 
   >>> from zope.app.keyreference.interfaces import IKeyReference
@@ -59,10 +57,10 @@
   >>> ref1 == ref2
   True
 
-We have not commited, our transaction therefore the ref returns None
+We have not committed our transaction, therefore the reference returns None
 because it is not in the database.
 
-  >>> ref1() is None
+  >>> ref1() is a
   True
 
   >>> transaction.commit()
@@ -74,8 +72,7 @@
 
   >>> a2.value
   1
-  
+
   >>> ref3 = IKeyReference(a2)
   >>> ref3 == ref2 == ref1
   True
-

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/tests/TRANSACTION.txt
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/tests/TRANSACTION.txt	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/tests/TRANSACTION.txt	2007-12-28 10:34:52 UTC (rev 82475)
@@ -19,6 +19,7 @@
 Setup a sqlalchemy table and class :
 
   >>> import sqlalchemy
+  >>> import sqlalchemy.orm
   >>> import z3c.zalchemy
   >>> table2 = sqlalchemy.Table(
   ...     'table2',
@@ -29,7 +30,7 @@
   ...     )
   >>> class A(object):
   ...   pass
-  >>> A.mapper = sqlalchemy.mapper(A, table2)
+  >>> A.mapper = sqlalchemy.orm.mapper(A, table2)
 
 Now start a zope transaction :
 
@@ -173,7 +174,7 @@
   >>> transaction.commit()
   Traceback (most recent call last):
   ...
-  SQLError: (IntegrityError) PRIMARY KEY must be unique u'INSERT INTO table2 (id, value) VALUES (?, ?)' [2, 3]
+  IntegrityError: (IntegrityError) PRIMARY KEY must be unique u'INSERT INTO table2 (id, value) VALUES (?, ?)' [2, 3]
 
 Finally we need to abort zope's transaction.
 
@@ -189,7 +190,7 @@
   >>> transaction.commit()
   Traceback (most recent call last):
   ...
-  SQLError: (IntegrityError) PRIMARY KEY must be unique u'INSERT INTO table2 (id, value) VALUES (?, ?)' [2, 3]
+  IntegrityError: (IntegrityError) PRIMARY KEY must be unique u'INSERT INTO table2 (id, value) VALUES (?, ?)' [2, 3]
 
 We need to manually abort the transaction.
 
@@ -230,7 +231,7 @@
 >>> dm.commit(None)
 Traceback (most recent call last):
     ...
-SQLError: (ValueError) Conflict 'UPDATE bla...' (1, 2, 3)
+DBAPIError: (ValueError) Conflict 'UPDATE bla...' (1, 2, 3)
 
 
 When we now provide an adapter from SQLError to IConflictError we'll get a
@@ -256,16 +257,16 @@
 
 
 Note, that we added a condition to the adapter, so we'll only get a conflict
-error when the argument is "Conflict". Otherise the original exception is
+error when the argument is "Conflict". Otherwise the original exception is
 raised:
 
 >>> MockSession.conflict = 'No conflict'
 >>> dm.commit(None)
 Traceback (most recent call last):
     ...
-SQLError: (ValueError) No conflict 'UPDATE bla...' (1, 2, 3)
-   
+DBAPIError: (ValueError) No conflict 'UPDATE bla...' (1, 2, 3)
 
+
 The same happens for savepoints where conflicts also might happen:
 
 >>> MockSession.conflict = 'Conflict'
@@ -281,7 +282,7 @@
 >>> dm.savepoint()
 Traceback (most recent call last):
     ...
-SQLError: (ValueError) Not at all 'UPDATE bla...' (1, 2, 3)
+DBAPIError: (ValueError) Not at all 'UPDATE bla...' (1, 2, 3)
 
 
 

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/tests/environ.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/tests/environ.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/tests/environ.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -12,9 +12,11 @@
 #
 ##############################################################################
 
-import z3c.zalchemy
 import sqlalchemy
+import sqlalchemy.orm
 
+import z3c.zalchemy
+
 testTable = sqlalchemy.Table(
         'testTable',
         z3c.zalchemy.metadata(),
@@ -33,5 +35,5 @@
 
 class mappedTestClass(object):
     pass
-sqlalchemy.mapper(mappedTestClass, testTable)
 
+sqlalchemy.orm.mapper(mappedTestClass, testTable)

Modified: z3c.zalchemy/trunk/src/z3c/zalchemy/tests/test_container.py
===================================================================
--- z3c.zalchemy/trunk/src/z3c/zalchemy/tests/test_container.py	2007-12-28 10:20:13 UTC (rev 82474)
+++ z3c.zalchemy/trunk/src/z3c/zalchemy/tests/test_container.py	2007-12-28 10:34:52 UTC (rev 82475)
@@ -18,6 +18,7 @@
 from zope.app.testing.placelesssetup import PlacelessSetup
 
 import sqlalchemy
+import sqlalchemy.orm
 import z3c.zalchemy
 
 
@@ -31,7 +32,7 @@
 class SQLTestSingle(object):
     pass
 
-sqlalchemy.mapper(SQLTestSingle, singlePrimaryKeyTable)
+sqlalchemy.orm.mapper(SQLTestSingle, singlePrimaryKeyTable)
 
 
 multiPrimaryKeyTable = sqlalchemy.Table(
@@ -47,7 +48,7 @@
         self.id1 = id1
         self.id2 = id2
 
-sqlalchemy.mapper(SQLTestMulti, multiPrimaryKeyTable)
+sqlalchemy.orm.mapper(SQLTestMulti, multiPrimaryKeyTable)
 
 
 def setUp(test):



More information about the Checkins mailing list