[Checkins] SVN: Sandbox/pcardune/z3c.viewlet/ saving some work I
did a couple months ago to combine resources and viewlets in
a single zcml declaration. Not sure if it will ever be fruitful.
Paul Carduner
paulcarduner at gmail.com
Sun May 4 20:13:23 EDT 2008
Log message for revision 86432:
saving some work I did a couple months ago to combine resources and viewlets in a single zcml declaration. Not sure if it will ever be fruitful.
Changed:
A Sandbox/pcardune/z3c.viewlet/
U Sandbox/pcardune/z3c.viewlet/setup.py
A Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/meta.zcml
U Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/tests.py
A Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/viewlet.py
A Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.py
A Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.txt
-=-
Copied: Sandbox/pcardune/z3c.viewlet (from rev 84662, z3c.viewlet/trunk)
Modified: Sandbox/pcardune/z3c.viewlet/setup.py
===================================================================
--- z3c.viewlet/trunk/setup.py 2008-03-15 15:02:20 UTC (rev 84662)
+++ Sandbox/pcardune/z3c.viewlet/setup.py 2008-05-05 00:13:23 UTC (rev 86432)
@@ -52,9 +52,14 @@
packages=find_packages('src'),
package_dir = {'': 'src'},
namespace_packages=['z3c'],
- extras_require=dict(test=['zope.testing']),
+ extras_require=dict(
+ test=['zope.app.testing',
+ 'zope.testing',
+ 'zope.app.securitypolicy',
+ 'zope.app.zcmlfiles']),
install_requires=['setuptools',
- 'zope.viewlet'],
+ 'zope.viewlet',
+ 'z3c.zrtresource'],
include_package_data = True,
zip_safe = False,
)
Added: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/meta.zcml
===================================================================
--- Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/meta.zcml (rev 0)
+++ Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/meta.zcml 2008-05-05 00:13:23 UTC (rev 86432)
@@ -0,0 +1,15 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:meta="http://namespaces.zope.org/meta">
+
+ <meta:directives namespace="http://namespaces.zope.org/z3c">
+
+ <meta:directive
+ name="zrt-resourceViewlet"
+ schema=".zcml.IZRTResourceViewletDirective"
+ handler=".zcml.zrtresourceViewlet"
+ />
+
+ </meta:directives>
+
+</configure>
Property changes on: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/meta.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/tests.py
===================================================================
--- z3c.viewlet/trunk/src/z3c/viewlet/tests.py 2008-03-15 15:02:20 UTC (rev 84662)
+++ Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/tests.py 2008-05-05 00:13:23 UTC (rev 86432)
@@ -26,6 +26,9 @@
DocFileSuite('README.txt',
optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
),
+ DocFileSuite('zcml.txt',
+ optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
+ ),
))
if __name__ == '__main__':
Added: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/viewlet.py
===================================================================
--- Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/viewlet.py (rev 0)
+++ Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/viewlet.py 2008-05-05 00:13:23 UTC (rev 86432)
@@ -0,0 +1,20 @@
+import os.path
+
+from zope.viewlet.viewlet import ViewletBase
+from zope.viewlet.viewlet import CSSResourceViewletBase
+import zope.viewlet.viewlet
+from zope.app.pagetemplate.viewpagetemplatefile import ViewPageTemplateFile
+
+
+class CSSViewlet(CSSResourceViewletBase, ViewletBase):
+
+ _index = ViewPageTemplateFile(os.path.join(os.path.dirname(zope.viewlet.viewlet.__file__),
+ 'css_viewlet.pt'))
+ resource = ''
+
+ @property
+ def _path(self):
+ return self.resource
+
+ def index(self):
+ return self._index()
Property changes on: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/viewlet.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.py
===================================================================
--- Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.py (rev 0)
+++ Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.py 2008-05-05 00:13:23 UTC (rev 86432)
@@ -0,0 +1,33 @@
+from z3c.zrtresource.zcml import IZRTResourceDirective
+from z3c.zrtresource.zcml import zrtresource
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+from zope.interface import Interface
+from zope.publisher.interfaces.browser import IBrowserView
+from zope.viewlet.metadirectives import IViewletDirective
+from zope.viewlet.interfaces import IViewletManager
+from zope.viewlet.metaconfigure import viewletDirective
+
+class IZRTResourceViewletDirective(IViewletDirective, IZRTResourceDirective):
+ """A directive to register a new zrtresource and viewlet at the same time.
+
+ """
+
+
+def zrtresourceViewlet(_context, name, file,
+ layer=IDefaultBrowserLayer,
+ permission='zope.Public', for_=Interface,
+ view=IBrowserView, manager=IViewletManager,
+ class_=None, template=None, attribute='render',
+ allowed_interface=None, allowed_attributes=None,
+ **kwargs):
+
+ viewletDirective(_context, name, permission, for_=for_,
+ layer=layer, view=view, manager=manager,
+ class_=class_, template=template,
+ attribute=attribute,
+ allowed_interface=allowed_interface,
+ allowed_attributes=allowed_attributes,
+ resource=name, **kwargs)
+
+ zrtresource(_context, name, file, layer=layer,
+ permission=permission)
Property changes on: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.txt
===================================================================
--- Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.txt (rev 0)
+++ Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.txt 2008-05-05 00:13:23 UTC (rev 86432)
@@ -0,0 +1,75 @@
+==========================
+Resource Viewlet directive
+==========================
+
+This shows how we can use the ``z3c:zrt-resourceViewlet`` directive to
+register both a resource and a corresponding viewlet for that
+resources. This can really come in handy for css viewlets, javascript
+viewlets, and more. First we must register the meta configuration.
+
+ >>> from zope.configuration import xmlconfig
+ >>> context = xmlconfig.string('''
+ ... <configure i18n_domain="zope">
+ ... <include package="z3c.viewlet" file="meta.zcml" />
+ ... </configure>
+ ... ''')
+
+Now we will use the ``z3c:zrt-resourceViewlet`` directive:
+
+ >>> import tempfile
+ >>> cssfile = tempfile.mktemp('.css')
+ >>> open(cssfile, 'w').write('''\
+ ... /* zrt-replace: "../img1" "++resource++/img" */
+ ... h1 {
+ ... color: red;
+ ... background: url('../img1/mybackground.gif');
+ ... }
+ ... ''')
+
+ >>> context = xmlconfig.string("""
+ ... <configure
+ ... xmlns:z3c="http://namespaces.zope.org/z3c" i18n_domain="zope">
+ ... <z3c:zrt-resourceViewlet
+ ... name="test.css"
+ ... file="%s"
+ ... for="*"
+ ... permission="zope.Public"
+ ... class="z3c.viewlet.viewlet.CSSViewlet"
+ ... />
+ ... </configure>
+ ... """ % cssfile, context=context)
+
+Now let's see if the resource adapter has been registered:
+
+ >>> import zope.component
+ >>> import zope.interface
+ >>> from zope.publisher.browser import TestRequest
+ >>> resource = zope.component.getAdapter(
+ ... TestRequest(), zope.interface.Interface, name='test.css')
+
+And we can try running it
+
+ >>> print resource.GET()
+ h1 {
+ color: red;
+ background: url('++resource++/img/mybackground.gif');
+ }
+
+Now let's try and get the viewlet:
+
+ >>> from zope.publisher.browser import BrowserView
+ >>> from zope.viewlet.interfaces import IViewlet
+ >>> from zope.viewlet.manager import ViewletManagerBase
+ >>> context = object()
+ >>> request = TestRequest()
+ >>> view = BrowserView(context, request)
+ >>> manager = ViewletManagerBase(context, request, view)
+ >>> viewlet = zope.component.queryMultiAdapter(
+ ... (context, request, view, manager), IViewlet,
+ ... name='test.css')
+
+for some reason I get a TraversalError: ('No traversable adapter
+found', <zope.viewlet.metaconfigure.CSSViewlet object at 0x8e61f8c>)
+when calling the next statement.
+
+# >>> print viewlet.render()
\ No newline at end of file
Property changes on: Sandbox/pcardune/z3c.viewlet/src/z3c/viewlet/zcml.txt
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list