[Checkins] SVN: z3c.cssresource/trunk/src/z3c/cssresource/ Make tests for directive and fix abvious bugs.

Stephan Richter srichter at cosmos.phy.tufts.edu
Mon Aug 14 14:38:53 EDT 2006


Log message for revision 69492:
  Make tests for directive and fix abvious bugs.
  

Changed:
  U   z3c.cssresource/trunk/src/z3c/cssresource/tests.py
  U   z3c.cssresource/trunk/src/z3c/cssresource/zcml.py
  A   z3c.cssresource/trunk/src/z3c/cssresource/zcml.txt

-=-
Modified: z3c.cssresource/trunk/src/z3c/cssresource/tests.py
===================================================================
--- z3c.cssresource/trunk/src/z3c/cssresource/tests.py	2006-08-14 18:25:51 UTC (rev 69491)
+++ z3c.cssresource/trunk/src/z3c/cssresource/tests.py	2006-08-14 18:38:52 UTC (rev 69492)
@@ -19,6 +19,7 @@
 
 import doctest
 import unittest
+from zope.app.testing import placelesssetup
 from zope.testing.doctestunit import DocFileSuite
 
 def test_suite():
@@ -27,6 +28,11 @@
         DocFileSuite('README.txt',
                      optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
                      ),
+        DocFileSuite('zcml.txt',
+                     setUp=placelesssetup.setUp,
+                     tearDown=placelesssetup.tearDown,
+                     optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS,
+                     ),
         ))
 
 if __name__ == '__main__':

Modified: z3c.cssresource/trunk/src/z3c/cssresource/zcml.py
===================================================================
--- z3c.cssresource/trunk/src/z3c/cssresource/zcml.py	2006-08-14 18:25:51 UTC (rev 69491)
+++ z3c.cssresource/trunk/src/z3c/cssresource/zcml.py	2006-08-14 18:38:52 UTC (rev 69492)
@@ -19,10 +19,11 @@
 import zope.configuration.fields
 from zope.component.zcml import handler
 from zope.interface import Interface
-from zope.publisher.interfaces.browser import IDefaultBrowserLayer
-from zope.app.publisher.browser import metadirectives
+from zope.publisher.interfaces import browser
+from zope.security.checker import CheckerPublic, NamesChecker
+from zope.app.publisher.browser import metadirectives, resourcemeta
 
-from z3c.cssresource import cssresource
+import z3c.cssresource
 
 
 class ICSSResourceDirective(metadirectives.IBasicResourceInformation):
@@ -47,13 +48,18 @@
         )
 
 
-def cssresource(_context, name, file, layer=IDefaultBrowserLayer,
+def cssresource(_context, name, file, layer=browser.IDefaultBrowserLayer,
                 permission='zope.Public'):
 
-    factory = cssresource.CSSFileResourceFactory(file, checker, name)
+    if permission == 'zope.Public':
+        permission = CheckerPublic
 
+    checker = NamesChecker(resourcemeta.allowed_names, permission)
+
+    factory = z3c.cssresource.CSSFileResourceFactory(file, checker, name)
+
     _context.action(
-        discriminator = ('resource', name, IBrowserRequest, layer),
+        discriminator = ('resource', name, browser.IBrowserRequest, layer),
         callable = handler,
         args = ('registerAdapter',
                 factory, (layer,), Interface, name, _context.info),

Added: z3c.cssresource/trunk/src/z3c/cssresource/zcml.txt
===================================================================
--- z3c.cssresource/trunk/src/z3c/cssresource/zcml.txt	2006-08-14 18:25:51 UTC (rev 69491)
+++ z3c.cssresource/trunk/src/z3c/cssresource/zcml.txt	2006-08-14 18:38:52 UTC (rev 69492)
@@ -0,0 +1,61 @@
+==========================
+``css-resource`` Directive
+==========================
+
+This package provides a new directive to use the special resource
+directive. Let's register it first:
+
+  >>> from zope.configuration import xmlconfig
+  >>> context = xmlconfig.string('''
+  ... <configure i18n_domain="zope">
+  ...   <include package="z3c.cssresource" file="meta.zcml" />
+  ... </configure>
+  ... ''')
+
+Now we can register a resource:
+
+  >>> import tempfile
+  >>> fn = tempfile.mktemp('.css')
+  >>> open(fn, 'w').write('''\
+  ... /* zope-global-replace: "../img1" "++resource++/img" */
+  ... h1 {
+  ...   color: red;
+  ...   background: url('../img1/mybackground.gif');
+  ... }
+  ...
+  ... h2 {
+  ...   color: red;
+  ...   background: url('../img2/mybackground.gif');
+  ... }
+  ... /* zope-global-replace: "../img2" "++resource++/img" */
+  ... ''')
+
+  >>> context = xmlconfig.string('''
+  ... <configure xmlns="http://namespaces.zope.org/browser" i18n_domain="zope">
+  ...   <css-resource
+  ...       name="test.css"
+  ...       file="%s" />
+  ... </configure>
+  ... ''' %fn, context=context)
+
+Now let's see whether the 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')
+
+Now run it:
+
+  >>> print resource.GET()
+  h1 {
+    color: red;
+    background: url('++resource++/img/mybackground.gif');
+  }
+  <BLANKLINE>
+  h2 {
+    color: red;
+    background: url('++resource++/img/mybackground.gif');
+  }
+  <BLANKLINE>


Property changes on: z3c.cssresource/trunk/src/z3c/cssresource/zcml.txt
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list