[Zope-Checkins] SVN: Zope/branches/hannosch-dtml-vs-accesscontrol/src/ Move the DTML policy assignment and deal with import order changes
Hanno Schlichting
hannosch at hannosch.eu
Sun May 16 15:32:39 EDT 2010
Log message for revision 112381:
Move the DTML policy assignment and deal with import order changes
Changed:
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/DTML.py
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplC.py
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplPython.py
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/Implementation.py
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/DT_Util.py
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/__init__.py
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/security.py
U Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/sequence/__init__.py
-=-
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/DTML.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/DTML.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/DTML.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -15,3 +15,4 @@
# BBB
from DocumentTemplate.security import DTMLSecurityAPI
+from DocumentTemplate.security import RestrictedDTML
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplC.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplC.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplC.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -31,15 +31,11 @@
# make sure a partial import doesn't pollute sys.modules
del sys.modules[__name__]
raise
-
-from AccessControl.ImplPython import RestrictedDTML
+
from AccessControl.ImplPython import SecurityManager
from AccessControl.ImplPython import ZopeSecurityPolicy
-class RestrictedDTML(RestrictedDTMLMixin, RestrictedDTML):
- """A mix-in for derivatives of DT_String.String that adds Zope security."""
-
class ZopeSecurityPolicy(cZopeSecurityPolicy, ZopeSecurityPolicy):
"""A security manager provides methods for checking access and managing
executable context and policies
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplPython.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplPython.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/ImplPython.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -180,19 +180,6 @@
return len(v)
-# AccessControl.DTML
-# ------------------
-
-class RestrictedDTML:
- """A mix-in for derivatives of DT_String.String that adds Zope security."""
-
- def guarded_getattr(self, *args): # ob, name [, default]
- return guarded_getattr(*args)
-
- def guarded_getitem(self, ob, index):
- return guarded_getitem(ob, index)
-
-
# AccessControl.ZopeSecurityPolicy
# --------------------------------
#
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/Implementation.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/Implementation.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/AccessControl/Implementation.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -75,8 +75,6 @@
_policy_names = {
"AccessControl": ("setDefaultBehaviors",
),
- "AccessControl.DTML": ("RestrictedDTML",
- ),
"AccessControl.PermissionRole": ("_what_not_even_god_should_do",
"rolesForPermissionOn",
"PermissionRole",
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/DT_Util.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/DT_Util.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/DT_Util.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -33,6 +33,10 @@
from Shared.TaintedString import TaintedString
+if 'test' not in utility_builtins:
+ from RestrictedPython.Utilities import test
+ utility_builtins['test'] = test
+
test = utility_builtins['test'] # for backwards compatibility, dont remove!
LIMITED_BUILTINS = 1
@@ -109,6 +113,7 @@
return retval
TemplateDict.string = StringModuleWrapper()
+TemplateDict.__allow_access_to_unprotected_subobjects__ = 1
# The functions below are meant to bind to the TemplateDict.
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/__init__.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/__init__.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/__init__.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -10,14 +10,11 @@
# FOR A PARTICULAR PURPOSE
#
##############################################################################
-__doc__='''Package wrapper for Document Template
+"""Package wrapper for Document Template
This wrapper allows the (now many) document template modules to be
-segregated in a separate package.
+segregated in a separate package."""
-$Id$'''
-__version__='$Revision: 1.18 $'[11:-2]
-
from DocumentTemplate.DT_String import String, File
from DocumentTemplate.DT_HTML import HTML, HTMLDefault, HTMLFile
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/security.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/security.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/security.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -15,28 +15,43 @@
import string, math, random, sets
-from AccessControl import SecurityManagement
-from AccessControl.SimpleObjectPolicies import ContainerAssertions
-from AccessControl.ZopeGuards import safe_builtins
-
-import DocumentTemplate.sequence
-from DocumentTemplate import DT_Util
-
-# RestrictedDTML is inserted by AccessControl.Implementation.
-
-
# Allow access to unprotected attributes
-DT_Util.TemplateDict.__allow_access_to_unprotected_subobjects__=1
string.__allow_access_to_unprotected_subobjects__=1
math.__allow_access_to_unprotected_subobjects__=1
random.__allow_access_to_unprotected_subobjects__=1
sets.__allow_access_to_unprotected_subobjects__=1
+# Setup RestrictedDTML
-DocumentTemplate.sequence.__allow_access_to_unprotected_subobjects__=1
+from AccessControl.ImplPython import guarded_getattr
+from AccessControl.ZopeGuards import guarded_getitem
+RestrictedDTML = None
+
+class BaseRestrictedDTML:
+ """A mix-in for derivatives of DT_String.String that adds Zope security."""
+
+ def guarded_getattr(self, *args): # ob, name [, default]
+ return guarded_getattr(*args)
+
+ def guarded_getitem(self, ob, index):
+ return guarded_getitem(ob, index)
+
+
+# This does not respect the security policy as set by AccessControl. Instead
+# it only deals with the C module being compiled or not.
+try:
+ from AccessControl.cAccessControl import RestrictedDTMLMixin
+except ImportError:
+ RestrictedDTML = BaseRestrictedDTML
+else:
+ class RestrictedDTML(RestrictedDTMLMixin, BaseRestrictedDTML):
+ """C version of RestrictedDTML."""
+
# Add security testing capabilities
+from AccessControl import SecurityManagement
+
class DTMLSecurityAPI:
"""API for performing security checks in DTML using '_' methods.
"""
@@ -96,11 +111,16 @@
if r > 0: return r-1
return r
+
+from DocumentTemplate import DT_Util
+
for name, v in DTMLSecurityAPI.__dict__.items():
if name[0] != '_':
setattr(DT_Util.TemplateDict, name, v)
from types import FunctionType
+from AccessControl.ZopeGuards import safe_builtins
+
for name, v in safe_builtins.items():
if type(v) is FunctionType:
v = DT_Util.NotBindable(v)
@@ -109,11 +129,14 @@
setattr(DT_Util.TemplateDict, name, v)
+# Temporarily create a DictInstance so that we can mark its type as
+# being a key in the ContainerAssertions.
+
+from AccessControl.SimpleObjectPolicies import ContainerAssertions
+
class _dummy_class:
pass
-# Temporarily create a DictInstance so that we can mark its type as
-# being a key in the ContainerAssertions.
templateDict = DT_Util.TemplateDict()
try:
dictInstance = templateDict(dummy=1)[0]
Modified: Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/sequence/__init__.py
===================================================================
--- Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/sequence/__init__.py 2010-05-16 19:01:27 UTC (rev 112380)
+++ Zope/branches/hannosch-dtml-vs-accesscontrol/src/DocumentTemplate/sequence/__init__.py 2010-05-16 19:32:39 UTC (rev 112381)
@@ -11,5 +11,6 @@
#
##############################################################################
+__allow_access_to_unprotected_subobjects__ = 1
from zope.sequencesort.ssort import *
More information about the Zope-Checkins
mailing list