[Checkins] SVN: grokcore.resource/trunk/src/grokcore/resource/ No longer go up the mro in order to find parent's resources.

Jan-Jaap Driessen cvs-admin at zope.org
Tue May 8 23:04:02 UTC 2012


Log message for revision 125739:
  No longer go up the mro in order to find parent's resources.

Changed:
  U   grokcore.resource/trunk/src/grokcore/resource/event.py
  U   grokcore.resource/trunk/src/grokcore/resource/tests/fixtures.py
  U   grokcore.resource/trunk/src/grokcore/resource/tests/test_functional.py

-=-
Modified: grokcore.resource/trunk/src/grokcore/resource/event.py
===================================================================
--- grokcore.resource/trunk/src/grokcore/resource/event.py	2012-05-08 19:54:10 UTC (rev 125738)
+++ grokcore.resource/trunk/src/grokcore/resource/event.py	2012-05-08 23:03:59 UTC (rev 125739)
@@ -5,35 +5,20 @@
 
 import grokcore.resource.directives
 
-
 @grokcore.component.subscribe(
     grokcore.resource.interfaces.IResourcesIncluder,
     zope.app.publication.interfaces.IBeforeTraverseEvent)
 def handle_inclusion(includer, event):
     includer = zope.security.proxy.removeSecurityProxy(includer)
-    needs = set()
-    # XXX Need to fix this.
-    for class_ in includer.__class__.__mro__:
-        if grokcore.resource.interfaces.IResourcesIncluder.implementedBy(class_):
-            father = zope.security.proxy.removeSecurityProxy(class_)
-            for resources in \
-                grokcore.resource.directives.include.bind().get(father):
-                needs.update(resources)
-    for resource in needs:
-        resource.need()
+    for resources in grokcore.resource.directives.include.bind().get(includer):
+        for resource in resources:
+            resource.need()
 
 @grokcore.component.subscribe(
     grokcore.resource.interfaces.IResourcesIncluder,
     zope.contentprovider.interfaces.IBeforeUpdateEvent)
 def handle_inclusion(includer, event):
     includer = zope.security.proxy.removeSecurityProxy(includer)
-    needs = set()
-    # XXX Need to fix this.
-    for class_ in includer.__class__.__mro__:
-        if grokcore.resource.interfaces.IResourcesIncluder.implementedBy(class_):
-            father = zope.security.proxy.removeSecurityProxy(class_)
-            for resources in \
-                grokcore.resource.directives.include.bind().get(father):
-                needs.update(resources)
-    for resource in needs:
-        resource.need()
+    for resources in grokcore.resource.directives.include.bind().get(includer):
+        for resource in resources:
+            resource.need()

Modified: grokcore.resource/trunk/src/grokcore/resource/tests/fixtures.py
===================================================================
--- grokcore.resource/trunk/src/grokcore/resource/tests/fixtures.py	2012-05-08 19:54:10 UTC (rev 125738)
+++ grokcore.resource/trunk/src/grokcore/resource/tests/fixtures.py	2012-05-08 23:03:59 UTC (rev 125739)
@@ -20,7 +20,7 @@
     grokcore.resource.include(css_a)
     grokcore.view.template('index')
 
-class ViewWithExtraResource(MyView):
+class ViewWithOwnResource(MyView):
     grokcore.resource.include(css_b)
 
 class ViewWithMultipleResources(grokcore.view.View):

Modified: grokcore.resource/trunk/src/grokcore/resource/tests/test_functional.py
===================================================================
--- grokcore.resource/trunk/src/grokcore/resource/tests/test_functional.py	2012-05-08 19:54:10 UTC (rev 125738)
+++ grokcore.resource/trunk/src/grokcore/resource/tests/test_functional.py	2012-05-08 23:03:59 UTC (rev 125739)
@@ -87,16 +87,14 @@
 </html>
 ''', browser.contents)
 
-    def test_stacking(self):
-        '''The `include` directive can be stacked, if several resources are
-        to be included.'''
+    def test_resources_override_in_subclass(self):
+        '''The `include` directive overrides resources needed in super classes.'''
         from zope.app.wsgi.testlayer import Browser
-        browser = Browser('http://localhost/@@viewwithextraresource')
+        browser = Browser('http://localhost/@@viewwithownresource')
         self.assertEqual('''\
 <html>
 <head>
-    <link rel="stylesheet" type="text/css" href="http://localhost/fanstatic/grokcore.resource.tests/a.css" />
-<link rel="stylesheet" type="text/css" href="http://localhost/fanstatic/grokcore.resource.tests/b.css" />
+    <link rel="stylesheet" type="text/css" href="http://localhost/fanstatic/grokcore.resource.tests/b.css" />
 
 </head>
 <body>



More information about the checkins mailing list