[z3-checkins] r36456 - in z3/sqlos/trunk/src/sqlos: . testing

kobold at codespeak.net kobold at codespeak.net
Thu Jan 11 11:09:05 CET 2007


Author: kobold
Date: Thu Jan 11 11:08:50 2007
New Revision: 36456

Modified:
   z3/sqlos/trunk/src/sqlos/configure.zcml
   z3/sqlos/trunk/src/sqlos/ftesting.zcml
   z3/sqlos/trunk/src/sqlos/testing/sampleperson.py
   z3/sqlos/trunk/src/sqlos/zsqlobject.py
Log:
Splitted SQLOS and SQLOSContainer, so the users can choose which one they want to subclass.


Modified: z3/sqlos/trunk/src/sqlos/configure.zcml
==============================================================================
--- z3/sqlos/trunk/src/sqlos/configure.zcml	(original)
+++ z3/sqlos/trunk/src/sqlos/configure.zcml	Thu Jan 11 11:08:50 2007
@@ -79,7 +79,7 @@
       attribute="contents"
       />
 
-  <!-- Database adapters -->
+  <!-- Database adapters and security declarations -->
 
   <class class=".adapter.MySQLAdapter">
     <require

Modified: z3/sqlos/trunk/src/sqlos/ftesting.zcml
==============================================================================
--- z3/sqlos/trunk/src/sqlos/ftesting.zcml	(original)
+++ z3/sqlos/trunk/src/sqlos/ftesting.zcml	Thu Jan 11 11:08:50 2007
@@ -12,7 +12,7 @@
        You should only need to change the connectionName in order to
        test against a different database that sqlite -->
 
-  <sqlos:connectionName name='pg2sql' />
+  <sqlos:connectionName name='sqlite' />
 
   <adapter
       provides=".interfaces.IZopeSQLConnection"

Modified: z3/sqlos/trunk/src/sqlos/testing/sampleperson.py
==============================================================================
--- z3/sqlos/trunk/src/sqlos/testing/sampleperson.py	(original)
+++ z3/sqlos/trunk/src/sqlos/testing/sampleperson.py	Thu Jan 11 11:08:50 2007
@@ -18,7 +18,7 @@
 from zope.app.container import constraints
 from zope.app.container.interfaces import IContained
 
-from sqlos.zsqlobject import SQLOS
+from sqlos.zsqlobject import SQLOS, SQLOSContainer
 from sqlos.interfaces import ISQLSchema, IISQLObjectIsolated, ISQLObjectIsolated
 from sqlos.container import SQLObjectContainer
 from sqlos.container import SQLObjectIsolatedContainer, SQLObjectMonoContainer
@@ -92,7 +92,7 @@
     factory = 'sqlos.testing.SamplePerson'
 
 
-class SamplePerson(SQLOS):
+class SamplePerson(SQLOSContainer):
 
     implements(IPerson, IPersonContained)
 
@@ -102,7 +102,7 @@
     dogs = SQLMultipleJoin('SampleDog', joinColumn='owner_id')
 
 
-class SampleIsolatedPerson(SQLOS):
+class SampleIsolatedPerson(SQLOSContainer):
 
     classProvides(IISQLObjectIsolated)
     implements(IPerson, ISQLObjectIsolated)
@@ -165,7 +165,7 @@
     )
 
 
-class SampleDog(SQLOS):
+class SampleDog(SQLOSContainer):
 
     implements(IDog)
 

Modified: z3/sqlos/trunk/src/sqlos/zsqlobject.py
==============================================================================
--- z3/sqlos/trunk/src/sqlos/zsqlobject.py	(original)
+++ z3/sqlos/trunk/src/sqlos/zsqlobject.py	Thu Jan 11 11:08:50 2007
@@ -56,9 +56,6 @@
         >>> from zope.interface.verify import verifyObject
         >>> verifyObject(ISQLObject, s)
         True
-        >>> verifyObject(IReadContainer, s)
-        True
-
 
     And finally call tearDown and cleanup:
 
@@ -66,10 +63,9 @@
 
     """
 
-    implements(ISQLObject, IReadContainer)
+    implements(ISQLObject)
 
     _connection = ConnectionDescriptor()
-    _containers = None
 
     class sqlmeta:
         lazyUpdate = True
@@ -101,6 +97,36 @@
     def setParent(self, parent):
         self.__parent__ = parent
 
+
+class SQLOSContainer(SQLOS):
+    """Subclass SQLOS to provide a container for subitems. The subitems
+    supported are ForeignKeys, SQLSingleJoin, SQLMultipleJoin and
+    SQLRelatedJoins.
+
+    First, make a test data base:
+
+        >>> from sqlos import testing
+        >>> testdb = testing.TestDB([SQLOSContainer])
+
+    Test the interface:
+
+        >>> s = SQLOSContainer()
+        >>> from zope.interface.verify import verifyObject
+        >>> verifyObject(ISQLObject, s)
+        True
+        >>> verifyObject(IReadContainer, s)
+        True
+
+    And finally call tearDown and cleanup:
+
+        >>> testdb.tearDown()
+
+    """
+
+    implements(IReadContainer)
+
+    _containers = None
+
     def __getitem__(self, name):
         """See zope.app.container.interfaces.IReadContainer"""
         if self._containers is None:


More information about the z3-checkins mailing list