[Checkins] SVN: cmf.pt/ Initial import.

Malthe Borch mborch at gmail.com
Mon Nov 24 06:39:57 EST 2008


Log message for revision 93302:
  Initial import.

Changed:
  A   cmf.pt/
  A   cmf.pt/trunk/
  A   cmf.pt/trunk/AUTHOR.txt
  A   cmf.pt/trunk/README.txt
  A   cmf.pt/trunk/setup.py
  A   cmf.pt/trunk/src/
  A   cmf.pt/trunk/src/cmf/
  A   cmf.pt/trunk/src/cmf/__init__.py
  A   cmf.pt/trunk/src/cmf/pt/
  A   cmf.pt/trunk/src/cmf/pt/__init__.py
  A   cmf.pt/trunk/src/cmf/pt/cmf.py
  A   cmf.pt/trunk/src/cmf/pt/configure.zcml

-=-
Added: cmf.pt/trunk/AUTHOR.txt
===================================================================
--- cmf.pt/trunk/AUTHOR.txt	                        (rev 0)
+++ cmf.pt/trunk/AUTHOR.txt	2008-11-24 11:39:56 UTC (rev 93302)
@@ -0,0 +1 @@
+Malthe Borch <mborch at gmail.com>

Added: cmf.pt/trunk/README.txt
===================================================================
--- cmf.pt/trunk/README.txt	                        (rev 0)
+++ cmf.pt/trunk/README.txt	2008-11-24 11:39:56 UTC (rev 93302)
@@ -0,0 +1,17 @@
+Overview
+========
+
+The cmf.pt package allows using the Chameleon template engine with the
+Zope 2 CMF.
+
+Usage
+-----
+
+To enable Chameleon, simply include the ZCML configuration::
+
+  <include package="five.pt" />
+  <include package="cmf.pt" />
+
+For general information about Chameleon, see
+http://chameleon.repoze.org/.
+

Added: cmf.pt/trunk/setup.py
===================================================================
--- cmf.pt/trunk/setup.py	                        (rev 0)
+++ cmf.pt/trunk/setup.py	2008-11-24 11:39:56 UTC (rev 93302)
@@ -0,0 +1,31 @@
+from setuptools import setup, find_packages
+
+version = '0.1'
+
+setup(name='cmf.pt',
+      version=version,
+      description="Bridge to use Chameleon with Zope 2 and CMF.",
+      long_description=open("README.txt").read() + open("CHANGES.txt").read(),
+      classifiers=[
+        "Framework :: Zope2",
+        "Programming Language :: Python",
+        "Topic :: Text Processing :: Markup :: HTML",
+        "Topic :: Text Processing :: Markup :: XML",
+        "Topic :: Software Development :: Libraries :: Python Modules",
+        ],
+      keywords='',
+      author='Malthe Borch and the Zope community',
+      author_email='zope-dev at zope.org',
+      url='',
+      license='ZPL',
+      namespace_packages=['cmf'],
+      packages = find_packages('src'),
+      package_dir = {'':'src'},
+      include_package_data=True,
+      zip_safe=False,
+      install_requires=[
+          'setuptools',
+          'z3c.pt',
+          'five.pt',
+      ],
+      )

Added: cmf.pt/trunk/src/cmf/__init__.py
===================================================================
--- cmf.pt/trunk/src/cmf/__init__.py	                        (rev 0)
+++ cmf.pt/trunk/src/cmf/__init__.py	2008-11-24 11:39:56 UTC (rev 93302)
@@ -0,0 +1,6 @@
+# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)

Added: cmf.pt/trunk/src/cmf/pt/__init__.py
===================================================================
--- cmf.pt/trunk/src/cmf/pt/__init__.py	                        (rev 0)
+++ cmf.pt/trunk/src/cmf/pt/__init__.py	2008-11-24 11:39:56 UTC (rev 93302)
@@ -0,0 +1 @@
+#

Added: cmf.pt/trunk/src/cmf/pt/cmf.py
===================================================================
--- cmf.pt/trunk/src/cmf/pt/cmf.py	                        (rev 0)
+++ cmf.pt/trunk/src/cmf/pt/cmf.py	2008-11-24 11:39:56 UTC (rev 93302)
@@ -0,0 +1,80 @@
+import Globals
+
+from Products.CMFCore.FSObject import FSObject
+from Products.CMFCore import DirectoryView
+from Products.CMFCore import permissions
+
+from Products.CMFFormController.BaseControllerPageTemplate import \
+     BaseControllerPageTemplate as BaseCPT
+from Products.CMFFormController.FSControllerBase import FSControllerBase
+
+from Shared.DC.Scripts.Script import Script
+from AccessControl import ClassSecurityInfo
+from RestrictedPython import Utilities
+
+from five.pt.pagetemplate import BaseTemplateFile
+
+class FSPageTemplate(BaseTemplateFile, FSObject, Script):
+    meta_type = 'Filesystem Page Template'
+    
+    security = ClassSecurityInfo()
+    security.declareObjectProtected(permissions.View)
+
+    _default_bindings = {'name_subpath': 'traverse_subpath'}
+
+    utility_builtins = Utilities.utility_builtins
+    
+    def __init__(self, id, filepath, fullname=None, properties=None):
+        FSObject.__init__(self, id, filepath, fullname, properties)
+        self.ZBindings_edit(self._default_bindings)
+
+        # instantiate page template
+        BaseTemplateFile.__init__(self, filepath)
+        
+    def _readFile(self, reparse):
+        # templates are lazy
+        if reparse:
+            self.read()
+
+    def __call__(self, *args, **kwargs):
+        kwargs['args'] = args
+        return BaseTemplateFile.__call__(self, self, **kwargs)    
+
+    @property
+    def func_code(self):
+        return self.render.func_code    
+    
+class FSControllerPageTemplate(FSPageTemplate, FSControllerBase, BaseCPT):
+    def __init__(self, id, filepath, fullname=None, properties=None):
+        FSPageTemplate.__init__(self, id, filepath, fullname, properties)  
+        self.filepath = filepath
+      
+        self._read_action_metadata(self.getId(), filepath)
+        self._read_validator_metadata(self.getId(), filepath)
+
+    def _readFile(self, reparse):
+        FSPageTemplate._readFile(self, reparse)
+        self._readMetadata()
+
+    def _updateFromFS(self):
+        # workaround for Python 2.1 multiple inheritance lameness
+        return self._baseUpdateFromFS()
+
+    def _readMetadata(self):
+        # workaround for Python 2.1 multiple inheritance lameness
+        return self._baseReadMetadata()
+
+    def __call__(self, *args, **kwargs):
+        return self._call(FSPageTemplate.__call__, *args, **kwargs)
+
+Globals.InitializeClass(FSPageTemplate)
+Globals.InitializeClass(FSControllerPageTemplate)
+
+DirectoryView.registerFileExtension('pt', FSPageTemplate)
+DirectoryView.registerFileExtension('zpt', FSPageTemplate)
+DirectoryView.registerFileExtension('html', FSPageTemplate)
+DirectoryView.registerFileExtension('htm', FSPageTemplate)
+DirectoryView.registerFileExtension('cpt', FSControllerPageTemplate)
+
+DirectoryView.registerMetaType('Page Template', FSPageTemplate)
+DirectoryView.registerMetaType('Controller Page Template', FSControllerPageTemplate)

Added: cmf.pt/trunk/src/cmf/pt/configure.zcml
===================================================================
--- cmf.pt/trunk/src/cmf/pt/configure.zcml	                        (rev 0)
+++ cmf.pt/trunk/src/cmf/pt/configure.zcml	2008-11-24 11:39:56 UTC (rev 93302)
@@ -0,0 +1,6 @@
+<configure xmlns="http://namespaces.zope.org/zope">
+
+  <include package="five.pt" />
+  <include package=".cmf" />
+  
+</configure>



More information about the Checkins mailing list