[z3-checkins] r36286 - in z3/sqlos/trunk/src/sqlos: . interfaces

kobold at codespeak.net kobold at codespeak.net
Mon Jan 8 16:57:52 CET 2007


Author: kobold
Date: Mon Jan  8 16:57:48 2007
New Revision: 36286

Modified:
   z3/sqlos/trunk/src/sqlos/container.py
   z3/sqlos/trunk/src/sqlos/interfaces/__init__.py
   z3/sqlos/trunk/src/sqlos/zsqlobject.py
Log:
Backported minor fixes from the kobold-sqlos branch.


Modified: z3/sqlos/trunk/src/sqlos/container.py
==============================================================================
--- z3/sqlos/trunk/src/sqlos/container.py	(original)
+++ z3/sqlos/trunk/src/sqlos/container.py	Mon Jan  8 16:57:48 2007
@@ -52,7 +52,7 @@
         obj.__parent__ = parent
 
     if oldname != name and name is not None:
-        obj.__name__ = name
+        obj.__name__ = unicode(name)
 
     return obj
 
@@ -100,7 +100,8 @@
         """ Return a sequence-like object containing the names
         associated with the objects that appear in the folder
         """
-        for name, obj in self.items(): yield name
+        for name, obj in self.items():
+            yield name
 
     def __iter__(self):
         return iter(self.keys())
@@ -109,7 +110,8 @@
         """ Return a sequence-like object containing the objects that
         appear in the folder.
         """
-        for name, obj in self.items(): yield obj
+        for name, obj in self.items():
+            yield contained(obj, parent=self, name=name)
 
     def items(self):
         """Return a sequence-like object containing tuples of the form
@@ -153,7 +155,7 @@
             if factoryName != utility_name:
                 continue
             try:
-                obj = utility.get(id)
+                obj = utility.get(utility.sqlmeta.idType(id))
                 return contained(obj, parent=self, name=name)
             except (SQLObjectNotFound, ValueError):
                 # SQlObject raises ValueError if the key is not correct
@@ -167,7 +169,7 @@
            KeyError is raised.
         """
         try:
-            return self[name]
+            return contained(self[name], parent=self, name=name)
         except KeyError:
             return default
 
@@ -252,5 +254,5 @@
         obj = super(SQLIsolatedContainer, self).__getitem__(name)
         if hasattr(obj, 'domains'):
             if self.container_id in obj.domains:
-                return obj
+                return contained(obj, parent=self, name=name)
         raise KeyError, name

Modified: z3/sqlos/trunk/src/sqlos/interfaces/__init__.py
==============================================================================
--- z3/sqlos/trunk/src/sqlos/interfaces/__init__.py	(original)
+++ z3/sqlos/trunk/src/sqlos/interfaces/__init__.py	Mon Jan  8 16:57:48 2007
@@ -16,6 +16,7 @@
 from zope.schema.vocabulary import SimpleVocabulary
 from zope.schema import Choice, List
 from zope.annotation.interfaces import IAttributeAnnotatable
+from zope.app.container.interfaces import IContained
 from sqlobject import NoDefault
 from sqlobject.dbconnection import DBConnection, DBAPI
 from sqlobject import _mysql, _postgres, _sybase
@@ -267,7 +268,7 @@
         similar to select()
         """
 
-class ISQLObject(Interface):
+class ISQLObject(IContained):
 
     # XXX - _idName moved to sqlmeta
     #_idName = Attribute('Primary Key')

Modified: z3/sqlos/trunk/src/sqlos/zsqlobject.py
==============================================================================
--- z3/sqlos/trunk/src/sqlos/zsqlobject.py	(original)
+++ z3/sqlos/trunk/src/sqlos/zsqlobject.py	Mon Jan  8 16:57:48 2007
@@ -13,6 +13,7 @@
 from zope.interface import implements
 from sqlobject.main import SQLObject
 from sqlobject import StringCol
+from zope.app.container.contained import Contained
 
 from sqlos.connection import ConnectionDescriptor
 from sqlos.interfaces import ISQLObject
@@ -26,7 +27,7 @@
     _transaction.dirty_object_registry.syncUpdateAll()
 
 
-class SQLOS(SQLObject):
+class SQLOS(SQLObject, Contained):
     """Subclass SQLObject to enable ``lazy updates`` by default,
     as well as adding knowledge to register ``dirty`` objects
     with SQLObjectTransactionManager so they get sync'd on transaction
@@ -69,8 +70,11 @@
         # objects in the cache that have a __parent__ set.
         # This may be confusing when expect to get a object
         # which has no __parent__ and thats not what you get.
-        val = super(SQLOS, self).get(id, connection=connection,
-                                    selectResults=selectResults)
+        try:
+            val = super(SQLOS, self).get(id, connection=connection,
+                                        selectResults=selectResults)
+        except ValueError:
+            raise AttributeError, id
         if getattr(val, '__parent__', None) is not None:
             val.__parent__ = None
             val.__name__ = None


More information about the z3-checkins mailing list