[Checkins] SVN: megrok.resource/trunk/src/megrok/resource/ Added a test for including non-grokked resource libraries and fixed the directive "include" accordingly.

Souheil CHELFOUH souheil at chelfouh.com
Fri Feb 19 04:48:09 EST 2010


Log message for revision 109140:
  Added a test for including non-grokked resource libraries and fixed the directive "include" accordingly.
  

Changed:
  U   megrok.resource/trunk/src/megrok/resource/README.txt
  U   megrok.resource/trunk/src/megrok/resource/directives.py

-=-
Modified: megrok.resource/trunk/src/megrok/resource/README.txt
===================================================================
--- megrok.resource/trunk/src/megrok/resource/README.txt	2010-02-19 08:49:06 UTC (rev 109139)
+++ megrok.resource/trunk/src/megrok/resource/README.txt	2010-02-19 09:48:09 UTC (rev 109140)
@@ -205,9 +205,22 @@
   ...	  return u""
   Traceback (most recent call last):
   ...
-  ValueError: You can only include IInclusions components.
+  ValueError: You can only include IInclusion or ResourceLibrary components.
 
+It should accept non-grokked ResourceLibraries as valid inclusions::
 
+  >>> class OtherResources(resource.ResourceLibrary):
+  ...    resource.path('ftests/css')
+  ...    resource.resource('a.css')
+
+  >>> class TolerantView(view.View):
+  ...   grok.context(Interface)
+  ...   resource.include(OtherResources)
+  ...
+  ...   def render(self):
+  ...	  return u""
+ 
+
 Remote inclusion
 -----------------
 

Modified: megrok.resource/trunk/src/megrok/resource/directives.py
===================================================================
--- megrok.resource/trunk/src/megrok/resource/directives.py	2010-02-19 08:49:06 UTC (rev 109139)
+++ megrok.resource/trunk/src/megrok/resource/directives.py	2010-02-19 09:48:09 UTC (rev 109140)
@@ -3,15 +3,18 @@
 import martian
 from hurry.resource import ResourceInclusion
 from hurry.resource.interfaces import IInclusion
+from megrok.resource.components import ResourceLibrary
 from megrok.resource.interfaces import IResourcesIncluder
 from zope.interface import classImplements
 from zope.interface.declarations import addClassAdvisor
 
 
 def validateInclusion(directive, value):
-    if not IInclusion.providedBy(value):
+    if (not IInclusion.providedBy(value) and
+        not martian.util.check_subclass(value, ResourceLibrary)):
         raise ValueError(
-            "You can only include IInclusions components.")
+            "You can only include IInclusion or"
+            " ResourceLibrary components.")
 
 
 class use_hash(martian.Directive):



More information about the checkins mailing list