replace Element.__call__() by Element.execute; make PyReader more secure by overwriting __builtins__

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2486 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2008-03-30 08:53:19 +00:00
parent a6a7c56fb0
commit 0c4d6dda15
5 changed files with 10 additions and 9 deletions

View file

@ -41,7 +41,7 @@ class AnnotationsElement(Element):
for k, v in kw.items():
self[k] = v
def __call__(self, loader):
def execute(self, loader):
obj = self.parent.object
dc = IZopeDublinCore(obj, None)
if dc is not None:

2
external/base.py vendored
View file

@ -80,7 +80,7 @@ class Loader(Base, SetupManager):
def load(self, elements):
for element in elements:
element(self)
element.execute(self)
if element.subElements is not None:
self.load(element.subElements)

12
external/element.py vendored
View file

@ -69,7 +69,7 @@ class Element(dict):
self.subElements = []
self.subElements.append(element)
def __call__(self, loader):
def execute(self, loader):
pass
@ -78,7 +78,7 @@ class ConceptElement(Element):
elementType = 'concept'
posArgs = ('name', 'title', 'type')
def __call__(self, loader):
def execute(self, loader):
type = loader.concepts[self['type']]
kw = dict((k, v) for k, v in self.items()
if k not in self.posArgs)
@ -97,7 +97,7 @@ class TypeElement(ConceptElement):
if not isinstance(ti, basestring):
self['typeInterface'] = '.'.join((ti.__module__, ti.__name__))
def __call__(self, loader):
def execute(self, loader):
kw = dict((k, v) for k, v in self.items()
if k not in ('name', 'title', 'type', 'typeInterface'))
ti = self.get('typeInterface')
@ -137,7 +137,7 @@ class ResourceElement(Element):
f.write(content)
f.close()
def __call__(self, loader):
def execute(self, loader):
type = loader.concepts[self['type']]
kw = dict((k, v) for k, v in self.items()
if k not in self.posArgs)
@ -156,7 +156,7 @@ class ResourceRelationElement(ChildElement):
elementType = 'resourceRelation'
def __call__(self, loader):
def execute(self, loader):
loader.assignResource(self['first'], self['second'], self['predicate'])
@ -171,7 +171,7 @@ class NodeElement(Element):
for k, v in kw.items():
self[k] = v
def __call__(self, loader):
def execute(self, loader):
type = self['type']
cont = traverse(loader.views, self['path'])
target = self.pop('target', None)

View file

@ -51,7 +51,7 @@ class IElement(Interface):
""" Add a sub-element, may be called by the extractor during export.
"""
def __call__(loader):
def execute(loader):
""" Create the object that is specified by the element in the
context of the loader and return it.
"""

1
external/pyfunc.py vendored
View file

@ -46,6 +46,7 @@ class InputProcessor(dict):
def __init__(self):
self.elements = []
self['__builtins__'] = {} # security!
def __getitem__(self, key):
def factory(*args, **kw):