[z3-checkins] r5469 - in z3/sqlos/trunk: . container interfaces

dreamcatcher at codespeak.net dreamcatcher at codespeak.net
Wed Jul 7 02:04:20 MEST 2004


Author: dreamcatcher
Date: Wed Jul  7 02:04:19 2004
New Revision: 5469

Modified:
   z3/sqlos/trunk/_sqlos.py
   z3/sqlos/trunk/configure.zcml
   z3/sqlos/trunk/container/__init__.py
   z3/sqlos/trunk/interfaces/__init__.py
   z3/sqlos/trunk/metaconfigure.py
Log:
Die getAdapter! 

Modified: z3/sqlos/trunk/_sqlos.py
==============================================================================
--- z3/sqlos/trunk/_sqlos.py	(original)
+++ z3/sqlos/trunk/_sqlos.py	Wed Jul  7 02:04:19 2004
@@ -16,9 +16,6 @@
 from sqlos.connection import ConnectionDescriptor
 from sqlos.interfaces import ISQLObject, IISQLObject
 
-security_checker = ClassObjDescriptor('__Security_checker__')
-SQLObject.__Security_checker__ = security_checker
-
 class SQLOS(SQLObject):
     """Subclass SQLObject to enable ``lazy updates`` by default,
     as well as adding knowledge to register ``dirty`` objects
@@ -27,7 +24,6 @@
     """
     implements(ISQLObject)
 
-    __Security_checker__ = security_checker
     _connection = ConnectionDescriptor()
     _lazyUpdate = True
 

Modified: z3/sqlos/trunk/configure.zcml
==============================================================================
--- z3/sqlos/trunk/configure.zcml	(original)
+++ z3/sqlos/trunk/configure.zcml	Wed Jul  7 02:04:19 2004
@@ -144,6 +144,13 @@
         />
   </class>
 
+  <class class="sqlobject.dbconnection.Iteration">
+    <require
+        permission="zope.Public"
+        interface=".interfaces.IIterator"
+        />
+  </class>
+
   <!--
     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
     For now, you need to change the factory here if you want

Modified: z3/sqlos/trunk/container/__init__.py
==============================================================================
--- z3/sqlos/trunk/container/__init__.py	(original)
+++ z3/sqlos/trunk/container/__init__.py	Wed Jul  7 02:04:19 2004
@@ -133,7 +133,7 @@
         super(SQLObjectAdding, self).__init__(context, request)
 
     def add(self, content):
-        container = zapi.getAdapter(self.context, IContainer)
+        container = IContainer(self.context)
         klass = content.__class__
         klass = removeAllProxies(klass)
         className = klass.__name__

Modified: z3/sqlos/trunk/interfaces/__init__.py
==============================================================================
--- z3/sqlos/trunk/interfaces/__init__.py	(original)
+++ z3/sqlos/trunk/interfaces/__init__.py	Wed Jul  7 02:04:19 2004
@@ -293,8 +293,20 @@
 
 class ISelectResults(Interface):
 
+    def __getitem__(item):
+        """ List Emulation """
+
     def __iter__():
         """ List Emulation """
 
     def __len__():
         """ List emulation """
+
+class IIterator(Interface):
+
+    def __iter__():
+        """ Iterator """
+
+    def next():
+        """ Iterator """
+

Modified: z3/sqlos/trunk/metaconfigure.py
==============================================================================
--- z3/sqlos/trunk/metaconfigure.py	(original)
+++ z3/sqlos/trunk/metaconfigure.py	Wed Jul  7 02:04:19 2004
@@ -14,8 +14,8 @@
 from zope.interface import directlyProvides, implements
 from zope.app.component.metaconfigure import factory, utility
 from zope.app.component.metaconfigure import PublicPermission, proxify
+from zope.security.checker import defineChecker
 from zope.security.checker import getCheckerForInstancesOf, MultiChecker
-from zope.security.proxy import Proxy
 from zope.component.factory import Factory, IFactory
 
 from sqlos.interfaces import IISQLObject
@@ -50,17 +50,17 @@
     # <content> directive, so we create a Proxy using a checker
     # with computed permission names.
     # The permissions should probably be part of the directive.
-    read_perm = '%s.View%s' % (package, component.__name__)
-    change_perm = '%s.Change%s' % (package, component.__name__)
-    checker = MultiChecker(((IReadSQLObjectClass, read_perm),
-                            (IWriteSQLObjectClass, change_perm),
-                            ))
-
-    # XXX Seems like there's a bug on X30 that proxied
-    # objects don't expose interfaces declared by means of
-    # directlyProvides.
-    # proxied = Proxy(component, checker)
-    proxied = component
+
+    checker = getCheckerForInstancesOf(component)
+    if checker is None:
+        read_perm = '%s.View%s' % (package, component.__name__)
+        change_perm = '%s.Change%s' % (package, component.__name__)
+        checker = MultiChecker(((IReadSQLObjectClass, read_perm),
+                                (IWriteSQLObjectClass, change_perm),
+                                ))
+        defineChecker(component, checker)
+
+    proxied = proxify(component, checker)
 
     # XXX We pass permission=None here so that the utility handler
     # doesn't override what we've just did above.


More information about the z3-checkins mailing list