[Zope3-checkins] CVS: Zope3/src/zope/app/services - configure.zcml:1.15 viewpackage.py:1.5 zpt.py:1.5

Jim Fulton jim@zope.com
Fri, 7 Feb 2003 10:52:53 -0500


Update of /cvs-repository/Zope3/src/zope/app/services
In directory cvs.zope.org:/tmp/cvs-serv23792

Modified Files:
	configure.zcml viewpackage.py zpt.py 
Log Message:
Added file-system representation adapters for zpt templates.
Added index.html for templates to support browsing source.

Added index.html views for service manager, packages, packages, and
view packages. This so webdab clients and browsers can browser source.


=== Zope3/src/zope/app/services/configure.zcml 1.14 => 1.15 ===
--- Zope3/src/zope/app/services/configure.zcml:1.14	Thu Feb  6 23:58:42 2003
+++ Zope3/src/zope/app/services/configure.zcml	Fri Feb  7 10:52:21 2003
@@ -102,6 +102,27 @@
       />
 </content>
 
+<adapter 
+  for="zope.app.interfaces.services.interfaces.IZPTTemplate"
+  provides="zope.app.interfaces.file.IReadFile"
+  factory=".zpt.ReadFile"
+  permission="zope.ManageServices"
+  />
+
+<adapter 
+  for="zope.app.interfaces.services.interfaces.IZPTTemplate"
+  provides="zope.app.interfaces.file.IWriteFile"
+  factory=".zpt.WriteFile"
+  permission="zope.ManageServices"
+  />
+
+<adapter 
+  for="zope.app.interfaces.services.service.IViewPackage"
+  provides="zope.app.interfaces.file.IFileFactory"
+  factory=".zpt.ZPTFactory"
+  permission="zope.ManageServices"
+  />
+
 <!-- Role Templates -->
 
 <content class="zope.app.services.role.RoleService">


=== Zope3/src/zope/app/services/viewpackage.py 1.4 => 1.5 ===
--- Zope3/src/zope/app/services/viewpackage.py:1.4	Fri Feb  7 10:09:51 2003
+++ Zope3/src/zope/app/services/viewpackage.py	Fri Feb  7 10:52:21 2003
@@ -49,7 +49,7 @@
 
     def setObject(self, name, object):
         if not IZPTTemplate.isImplementedBy(object):
-            raise TypeError("Can only add packages")
+            raise TypeError("Can only add templates", object)
 
         # super() does not work on a context wrapped instance
         base = removeAllProxies(self)


=== Zope3/src/zope/app/services/zpt.py 1.4 => 1.5 ===
--- Zope3/src/zope/app/services/zpt.py:1.4	Mon Feb  3 15:57:47 2003
+++ Zope3/src/zope/app/services/zpt.py	Fri Feb  7 10:52:21 2003
@@ -30,6 +30,7 @@
 from zope.app.pagetemplate.engine import AppPT
 from zope.app.interfaces.services.interfaces import IZPTTemplate
 from zope.app.interfaces.index.text import ISearchableText
+from zope.app.interfaces.file import IReadFile, IWriteFile, IFileFactory
 
 class ZPTTemplate(AppPT, PageTemplate, Persistent):
 
@@ -87,3 +88,42 @@
             text = tag.sub('', text)
 
         return [text]
+
+# Adapters for file-system emulation
+
+class ReadFile:
+
+    __implements__ = IReadFile
+
+    def __init__(self, context):
+        self.context = context
+
+    def read(self):
+        return self.context.source
+
+    def size(self):
+        return len(self.context.source)
+        
+
+class WriteFile:
+
+    __implements__ = IWriteFile
+
+    def __init__(self, context):
+        self.context = context
+
+    def write(self, data):
+        self.context.source = data
+
+
+class ZPTFactory:
+
+    __implements__ = IFileFactory
+
+    def __init__(self, context):
+        self.context = context
+
+    def __call__(self, name, content_type, data):
+        r = ZPTTemplate()
+        r.source = data
+        return r