[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