[Zope-Checkins] CVS: Packages/AccessControl - ImplPython.py:1.1.2.4.20.2 cAccessControl.c:1.20.2.20.4.1

Jim Fulton jim at zope.com
Mon Feb 14 14:23:08 EST 2005


Update of /cvs-repository/Packages/AccessControl
In directory cvs.zope.org:/tmp/cvs-serv20661/lib/python/AccessControl

Modified Files:
      Tag: shh-aqtests-branch
	ImplPython.py cAccessControl.c 
Log Message:
Changed to let aq_acquire call validate, so that it would
call it while doing acquisition.  In the end, this is a return to
the earlier version, except that we now use Acquisition.aq_acquire 
rather than an aq_acquire method, so we avoid the icky hasattr.


=== Packages/AccessControl/ImplPython.py 1.1.2.4.20.1 => 1.1.2.4.20.2 ===
--- Packages/AccessControl/ImplPython.py:1.1.2.4.20.1	Fri Feb 11 18:54:21 2005
+++ Packages/AccessControl/ImplPython.py	Mon Feb 14 14:23:07 2005
@@ -19,6 +19,7 @@
 from Acquisition import aq_base
 from Acquisition import aq_parent
 from Acquisition import aq_inner
+from Acquisition import aq_acquire
 from ExtensionClass import Base
 from zLOG import LOG, PROBLEM
 
@@ -552,13 +553,14 @@
                 assert assertion == 1
             return v
 
-        validate = SecurityManagement.getSecurityManager().validate
 
-        # XXX:  Trying to work around CMF #318.
-        container = aq_parent(aq_inner(v))
-        if container is None:
-            container = inst
+        # See if we can get the value doing a filtered acquire.
+        # aq_acquire will either return the same value as held by
+        # v or it will return an Unauthorized raised by validate.
+        validate = SecurityManagement.getSecurityManager().validate
+        aq_acquire(inst, name, aq_validate, validate)
+        
+        return v
+        
 
-        if validate(inst, container, name, v):
-            return v
     raise Unauthorized, name


=== Packages/AccessControl/cAccessControl.c 1.20.2.20 => 1.20.2.20.4.1 ===
--- Packages/AccessControl/cAccessControl.c:1.20.2.20	Tue Dec 14 14:34:45 2004
+++ Packages/AccessControl/cAccessControl.c	Mon Feb 14 14:23:07 2005
@@ -2065,7 +2065,6 @@
                 PyObject *validate)
 {
   PyObject *v=0, *t=0;
-  int i;
 
   /* if name[:1] != '_': */
   if (PyString_Check(name) || PyUnicode_Check(name)) {
@@ -2133,17 +2132,23 @@
           return v;
         }
 
-      /*
-        if validate(inst, inst, name, v):
-            return v
-       */
-      validate=callfunction4(validate, inst, inst, name, v);
-      if (validate==NULL) goto err;
-      i=PyObject_IsTrue(validate);
-      Py_DECREF(validate);
-      if (i < 0) goto err;
-      if (i > 0) return v;
-      
+      /* 
+        # See if we can get the value doing a filtered acquire.
+        # aq_acquire will either return the same value as held by
+        # v or it will return an Unauthorized raised by validate.
+        validate = SecurityManagement.getSecurityManager().validate
+        aq_acquire(inst, name, aq_validate, validate)
+        
+        return v
+      */
+
+      t = aq_Acquire(inst, name, aq_validate, validate, 1, NULL, 0);
+      if (t == NULL)
+        return NULL;
+      Py_DECREF(t);
+
+      return v;
+            
       unauthErr(name, v);
     err:
       Py_DECREF(v);
@@ -2331,4 +2336,3 @@
 	Py_DECREF(module);
 	module = NULL;
 }
-



More information about the Zope-Checkins mailing list