[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