[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