[Zope-Checkins] CVS: Zope3/lib/python/Zope/App/PageTemplate - Engine.py:1.1.2.3 SimpleViewClass.py:1.1.2.2 ViewPageTemplateFile.py:1.1.2.2

Jim Fulton jim@zope.com
Fri, 7 Jun 2002 10:41:46 -0400


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

Modified Files:
      Tag: Zope-3x-branch
	Engine.py SimpleViewClass.py ViewPageTemplateFile.py 
Log Message:
Merging in Zope3InWonderland-branch, which implemented the following
proposals (see
http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/OldProposals): 
- RenameAllowToRequire

- GroupClassRelatedDirectivesInClassDirective

- ViewInterfaceAndSimplification

- ConsistentUseOfSpacesAsDelimitersInZCMLAttributes

- TwoArgumentViewConstructors

- ImplementsInZCML

- SimpleViewCreationInZCML

- RemoveGetView

- ReplaceProtectWithAllow

- ViewMethodsAsViews

- MergeProtectionAndComponentDefinitions

There were also various security fixes resulting of better integration
of security with components.


=== Zope3/lib/python/Zope/App/PageTemplate/Engine.py 1.1.2.2 => 1.1.2.3 ===


=== Zope3/lib/python/Zope/App/PageTemplate/SimpleViewClass.py 1.1.2.1 => 1.1.2.2 ===
 
 import sys
+from Zope.Publisher.Browser.BrowserView import BrowserView
 from Zope.Publisher.Browser.IBrowserPublisher import IBrowserPublisher
 from ViewPageTemplateFile import ViewPageTemplateFile
 from Zope.Security.Checker import defineChecker, NamesChecker
 
-class simple(object):
+class simple(BrowserView):
 
-    __implements__=IBrowserPublisher
-    
-    # Boiler plate
-    def __init__(self, context):
-        self._context=context
-
-    def getContext(self):
-        return self._context
+    __implements__ = IBrowserPublisher, BrowserView.__implements__
 
     def browserDefault(self, request):
-        return self, ('index.html',)
+        return self, ()
 
     def publishTraverse(self, request, name):
         if name == 'index.html':
@@ -41,24 +35,21 @@
         
         raise NotFound(self, name, request)
 
-
     # XXX: we need some unittests for this !!!
     def __getitem__(self, name):
         return self.index.macros[name]
 
-    def __call__(self, REQUEST, *args, **kw):
-        return self.index(REQUEST, *args, **kw)
+    def __call__(self, *args, **kw):
+        return self.index(self.request, *args, **kw)
 
 def SimpleViewClass(src, offering=None, used_for=None):
     if offering is None:
         offering = sys._getframe(1).f_globals
 
-    class_ = type(src, (simple,),
+    class_ = type("SimpleViewClass from %s" % src, (simple,),
                   {'index': ViewPageTemplateFile(src, offering)})
 
     if used_for is not None:
         class_.__used_for__ = used_for
-
-    defineChecker(class_, NamesChecker('index'))
 
     return class_


=== Zope3/lib/python/Zope/App/PageTemplate/ViewPageTemplateFile.py 1.1.2.1 => 1.1.2.2 ===
 
 from Zope.PageTemplate.PageTemplateFile import PageTemplateFile
-from Zope.ComponentArchitecture import getRequestView
+from Zope.ComponentArchitecture import getView
 from Engine import AppPT
 
 class ViewPageTemplateFile(AppPT, PageTemplateFile):
@@ -31,13 +31,15 @@
         namespace = super(ViewPageTemplateFile, self).pt_getContext(**_kw)
         namespace['request'] = request
         namespace['view'] = instance
-        namespace['context'] = context = instance.getContext()
+        namespace['context'] = context = instance.context
         namespace['views'] = ViewMapper(context, request)
         return namespace
 
-    def __call__(self, instance, REQUEST, *args, **keywords):
-        namespace = self.pt_getContext(request=REQUEST, instance=instance,
-                                       args=args, options=keywords)
+    def __call__(self, instance, *args, **keywords):
+        namespace = self.pt_getContext(
+            request=instance.request,
+            instance=instance,
+            args=args, options=keywords)
         return self.pt_render(namespace)
 
     def __get__(self, instance, type=None):
@@ -50,7 +52,7 @@
         self.request = request 
 
     def __getitem__(self, name):
-        return getRequestView(self.ob, name, self.request)
+        return getView(self.ob, name, self.request)
 
 
 class BoundPageTemplate: