[Checkins] SVN: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/
createSAWrapper(): new 'name' parameter
Andreas Jung
andreas at andreas-jung.com
Thu May 3 04:01:22 EDT 2007
Log message for revision 75040:
createSAWrapper(): new 'name' parameter
Changed:
U z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/CHANGES.txt
U z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py
U z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py
U z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/version.txt
-=-
Modified: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/CHANGES.txt
===================================================================
--- z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/CHANGES.txt 2007-05-03 07:18:30 UTC (rev 75039)
+++ z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/CHANGES.txt 2007-05-03 08:01:21 UTC (rev 75040)
@@ -1,3 +1,9 @@
+0.1.12 (unreleased)
+
+ - createSAWrapper() got a new optional 'name' parameter in order
+ to register the wrapper automatically instead of using a dedicated
+ registerSAWrapper(wrapper, name) call
+
0.1.11 (02.05.2007)
- added check for the 'mapper_class' attribute (classes from now
Modified: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py
===================================================================
--- z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py 2007-05-03 07:18:30 UTC (rev 75039)
+++ z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/tests/testSQLAlchemy.py 2007-05-03 08:01:21 UTC (rev 75040)
@@ -128,18 +128,26 @@
except sqlalchemy.exceptions.NoSuchTableError:
pass
+
def testWrapperRegistration(self):
wrapper = createSAWrapper('sqlite:///test')
- registerSAWrapper(wrapper, 'test.wrapper')
- wrapper2 = getSAWrapper('test.wrapper')
+ registerSAWrapper(wrapper, 'test.wrapper1')
+ wrapper2 = getSAWrapper('test.wrapper1')
self.assertEqual(wrapper, wrapper2)
+
def testWrapperRegistrationFailing(self):
wrapper = createSAWrapper('sqlite:///test')
- registerSAWrapper(wrapper, 'test.wrapper')
+ registerSAWrapper(wrapper, 'test.wrapper2')
self.assertRaises(ValueError, getSAWrapper, 'test.wrapperNonExistant')
+ def testWrapperDirectRegistration(self):
+ wrapper = createSAWrapper('sqlite:///test', name='test.wrapper3')
+ wrapper2 = getSAWrapper('test.wrapper3')
+ self.assertEqual(wrapper, wrapper2)
+
+
def test_suite():
from unittest import TestSuite, makeSuite
suite = TestSuite()
Modified: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py
===================================================================
--- z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py 2007-05-03 07:18:30 UTC (rev 75039)
+++ z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/util.py 2007-05-03 08:01:21 UTC (rev 75040)
@@ -28,10 +28,13 @@
registeredWrappers = {}
-def createSQLAlchemyWrapper(dsn, model=None, forZope=False, **kw):
+def createSAWrapper(dsn, model=None, forZope=False, name=None, **kw):
""" Convenience method to generate a wrapper for a DSN and a model.
This method hides all database related magic from the user.
Set 'forZope' to True to obtain a Zope-aware wrapper.
+
+ 'name' can be set to register the wrapper automatically in order
+ to avoid a dedicated registerSAWrapper() call.
"""
url = make_url(dsn)
@@ -42,20 +45,25 @@
if driver == 'postgres':
klass = forZope and ZopePostgresWrapper or PythonPostgresWrapper
- return klass(dsn, model, **kw)
+ wrapper = klass(dsn, model, **kw)
+ if name is not None:
+ registerSAWrapper(wrapper, name)
-createSAWrapper = createSQLAlchemyWrapper
+ return wrapper
+createSQLAlchemyWrapper = createSAWrapper
-def registerSQLAlchemyWrapper(wrapper, name):
+
+def registerSAWrapper(wrapper, name):
""" deferred registration of the wrapper as named utility """
if not registeredWrappers.has_key(name):
registeredWrappers[name] = wrapper
-registerSAWrapper = registerSQLAlchemyWrapper
+registerSQLAlchemyWrapper = registerSAWrapper
+
-def _registerSQLAlchemyWrapper(wrapper, name):
+def _registerSAWrapper(wrapper, name):
""" register a SQLAlchemyWrapper as named utility.
(never call this method directly)
"""
@@ -81,7 +89,7 @@
utilityService.provideUtility(ISQLAlchemyWrapper, wrapper, name)
-def getSQLAlchemyWrapper(name):
+def getSAWrapper(name):
""" return a SQLAlchemyWrapper instance by name """
if not registeredWrappers.has_key(name):
@@ -97,12 +105,13 @@
return getUtility(ISQLAlchemyWrapper, name)
except ComponentLookupError:
wrapper = registeredWrappers[name]
- _registerSQLAlchemyWrapper(wrapper, name)
+ _registerSAWrapper(wrapper, name)
return wrapper
-getSAWrapper = getSQLAlchemyWrapper
+getSQLAlchemyWrapper = getSAWrapper
-def allRegisteredSQLAlchemyWrappers():
+
+def allRegisteredSAWrappers():
""" return a dict containing information for all
registered wrappers.
"""
@@ -113,7 +122,7 @@
'kw' : wrapper.kw,
}
-allRegisteredSAWrappers = allRegisteredSQLAlchemyWrappers
+allRegisteredSQLAlchemyWrappers = allRegisteredSAWrappers
def allSAWrapperNames():
@@ -123,4 +132,4 @@
if __name__ == '__main__':
- print createWrapper('postgres://test:test@db.example.com/TestDB', None)
+ print createSAWrapper('postgres://test:test@db.example.com/TestDB', forZope=True)
Modified: z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/version.txt
===================================================================
--- z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/version.txt 2007-05-03 07:18:30 UTC (rev 75039)
+++ z3c.sqlalchemy/trunk/src/z3c/sqlalchemy/version.txt 2007-05-03 08:01:21 UTC (rev 75040)
@@ -1 +1 @@
-0.1.11
+0.1.12
More information about the Checkins
mailing list