[Checkins] SVN: z3c.sqlalchemy/trunk/ - fixed registering of custom mappers

Christian Zagrodnick cz at gocept.com
Wed Dec 2 07:26:58 EST 2009


Log message for revision 106165:
  - fixed registering of custom mappers
  
  - using tempfile for the sqllite default db (->speedup, no locks)
  
  
  
  

Changed:
  U   z3c.sqlalchemy/trunk/CHANGES.txt
  U   z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/base.py
  U   z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py

-=-
Modified: z3c.sqlalchemy/trunk/CHANGES.txt
===================================================================
--- z3c.sqlalchemy/trunk/CHANGES.txt	2009-12-02 10:42:39 UTC (rev 106164)
+++ z3c.sqlalchemy/trunk/CHANGES.txt	2009-12-02 12:26:57 UTC (rev 106165)
@@ -2,8 +2,11 @@
 ------------------
 
 - removed compatibility code with older Zope versions
+
 - fixed import issue with modern zope.component versions
 
+- fixed registering of custom mappers
+
 1.3.11 (unreleased)
 -------------------
 

Modified: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/base.py
===================================================================
--- z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/base.py	2009-12-02 10:42:39 UTC (rev 106164)
+++ z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/base.py	2009-12-02 12:26:57 UTC (rev 106165)
@@ -114,7 +114,7 @@
         #return session.connection().connection.connection
 
     def registerMapper(self, mapper, name):
-        self._mappers.registerMapper(mapper, name)
+        self._mappers._registerMapper(mapper, name)
 
     def getMapper(self, tablename, schema='public'):
         return self._mappers.getMapper(tablename, schema)

Modified: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py
===================================================================
--- z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py	2009-12-02 10:42:39 UTC (rev 106164)
+++ z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py	2009-12-02 12:26:57 UTC (rev 106165)
@@ -15,7 +15,9 @@
 
 import os
 import sqlalchemy
+import sqlalchemy.orm
 import unittest
+import tempfile
 
 from sqlalchemy import MetaData, Integer, String, Column, Table
 from sqlalchemy.ext.declarative import declarative_base
@@ -35,7 +37,11 @@
 
     def setUp(self):
 
-        self.dsn = os.environ.get('TEST_DSN', 'sqlite:///test')
+        self.dsn = os.environ.get('TEST_DSN')
+        self.tempfile = None
+        if not self.dsn:
+            self.tempfile = tempfile.mktemp()
+            self.dsn = 'sqlite:///%s' % self.tempfile
         self.db = wrapper = createSAWrapper(self.dsn)
         metadata = MetaData(bind=wrapper.engine)
 
@@ -51,10 +57,11 @@
         metadata.create_all()
 
     def tearDown(self):
-        self.dsn = os.environ.get('TEST_DSN', 'sqlite:///test')
-        wrapper = createSAWrapper(self.dsn)
-        metadata = MetaData(bind=wrapper.engine)
-        metadata.drop_all()
+        if self.tempfile:
+            os.remove(self.tempfile)
+        else:
+            metadata = MetaData(bind=self.db.engine)
+            metadata.drop_all()
 
     def testIFaceZopePostgres(self):
         verifyClass(ISQLAlchemyWrapper , ZopePostgresWrapper)
@@ -96,7 +103,17 @@
         User = db.getMapper('users')
         self.assertEqual(User, myUser)
 
+    def testCustomMapperRegister(self):
+        mytable = Table(
+            'mytable', self.db.metadata,
+            Column('id', Integer, primary_key=True),
+        )
+        class MyClass(object):
+            pass
+        mapper = sqlalchemy.orm.mapper(MyClass, mytable)
+        self.db.registerMapper(mapper, 'mymapper')
 
+
 #    def testCustomMapperClassWithWrongType(self):
 #
 #        class myUser(object): 
@@ -172,6 +189,7 @@
         session = self.db.session
         session.add(User(id=1, firstname='udo', lastname='juergens'))
         session.add(User(id=2, firstname='heino', lastname='n/a'))
+        session.flush()
 
         conn = self.db.connection
         cursor = conn.cursor()



More information about the checkins mailing list