[Zope-Checkins] CVS: Zope3/lib/python/Zope/PageTemplate - SimpleViewClass.py:1.1.2.7.6.1

Jim Fulton jim@zope.com
Fri, 26 Apr 2002 14:23:23 -0400


Update of /cvs-repository/Zope3/lib/python/Zope/PageTemplate
In directory cvs.zope.org:/tmp/cvs-serv26237/lib/python/Zope/PageTemplate

Modified Files:
      Tag: SecurityProxy-branch
	SimpleViewClass.py 
Log Message:
Changed security code to use security proxies and name-based
security. This has pretty far-reaching implications:

- You now protect names/operations, *not* values. This means it's as
  easy yo protect data attributes that have simple values as it is to
  protect methods.

- There is no longer a __permissions__ attribute. :)

- There is no longer a validate method in either security managers or
  policies. 

- No more need to have a special compiler for restricted code.
  In exchange, lots of objects are proxies and code sometimes needs to
  be prepared to remove proxies.

In addition:

- Basic objects (None, strings, numbers, etc.) are not wrapped in
  context wrappers.

- There is a test that fails unless Python 2.3 is used.



=== Zope3/lib/python/Zope/PageTemplate/SimpleViewClass.py 1.1.2.7 => 1.1.2.7.6.1 ===
 from Zope.Publisher.Browser.IBrowserPublisher import IBrowserPublisher
 from PageTemplateFile import PageTemplateFile
+from Zope.Security.Checker import defineChecker, NamesChecker
 
 class simple(object):
 
@@ -48,12 +49,11 @@
 def SimpleViewClass(src, offering=None, used_for=None):
     if offering is None:
         offering = sys._getframe(1).f_globals
-    
-    class C(simple):
 
-        if used_for is not None: __used_for__ = used_for
-        
-        index=PageTemplateFile(src, offering)
-        index.__permission__ = 'Zope.Public'
+    class_ = type(src, (simple,), {'index': PageTemplateFile(src, offering)})
+    if used_for is not None:
+        class_.__used_for__ = used_for
+
+    defineChecker(class_, NamesChecker('index'))
 
-    return C
+    return class_