[Zope-Checkins] CVS: Zope2 - pDocumentTemplate.py:1.27.40.2

shane@digicool.com shane@digicool.com
Fri, 27 Apr 2001 15:47:49 -0400 (EDT)


Update of /cvs-repository/Zope2/lib/python/DocumentTemplate
In directory korak:/tmp/cvs-serv14500

Modified Files:
      Tag: RestrictedPythonBranch
	pDocumentTemplate.py 
Log Message:
Fixed callable() semantics and matched with cDocumentTemplate



--- Updated File pDocumentTemplate.py in package Zope2 --
--- pDocumentTemplate.py	2001/04/26 22:25:08	1.27.40.1
+++ pDocumentTemplate.py	2001/04/27 19:47:47	1.27.40.2
@@ -144,15 +144,14 @@
         if key[:1]=='_':
             if key != '__str__':
                 raise KeyError, key # Don't divuldge private data
-            return str(inst)
+            else:
+                return str(inst)
 
         read_guard = self.read_guard
-        if read_guard is None:
-            inst1 = inst
-        else:
-            inst1 = read_guard(inst)
+        if read_guard is not None:
+            inst = read_guard(inst)
 
-        try: r = getattr(inst1, key)
+        try: r = getattr(inst, key)
         except AttributeError: raise KeyError, key
 
         self.cache[key]=r
@@ -215,9 +214,14 @@
                 return v.__render_with_namespace__(self)
             vbase = getattr(v, 'aq_base', v)
             if callable(vbase):
-                if getattr(vbase, 'isDocTemp', None):
-                    return v(None, self)
-                return v()
+                try:
+                    if getattr(vbase, 'isDocTemp', 0):
+                        v = v(None, self)
+                    else:
+                        v = v()
+                except AttributeError, n:
+                    if n != '__call__':
+                        raise
         return v
 
     def has_key(self,key):