[Checkins] SVN: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ Removed the grokker. it's WAY too expensive to get a grokker simply to set an attribute.

Souheil CHELFOUH souheil at chelfouh.com
Thu Nov 19 12:51:07 EST 2009


Log message for revision 105884:
  Removed the grokker. it's WAY too expensive to get a grokker simply to set an attribute.
  

Changed:
  U   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py
  U   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_mf.py
  D   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py

-=-
Modified: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py	2009-11-19 16:42:31 UTC (rev 105883)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py	2009-11-19 17:51:07 UTC (rev 105884)
@@ -1,7 +1,6 @@
 # -*- coding: utf-8 -*-
 
 import grokcore.component as grok
-
 from zope.interface import Interface
 from hurry.zoperesource.zopesupport import getRequest
 from grokcore.view.components import DirectoryResource
@@ -17,7 +16,17 @@
 class Library(DirectoryResource):
     grok.baseclass()
 
+    class __metaclass__(type):
+        """We do that do avoid having a grokker simply to set an attribute.
+        We could also rely on the classproperty package, but this is quite
+        straightforward.
+        """
+        def bind_grok_name(cls):
+            name = grok.name.bind().get(cls)
+            return name or cls.__name__.lower()
+        name = property(bind_grok_name) 
 
+
 @grok.adapter(Interface)
 @grok.implementer(ILibraryUrl)
 def library_url(library):
@@ -26,7 +35,7 @@
     resource = getAdapter(request, name=library.name)
     hash = IResourceContentsHash(resource)
     base_url = getMultiAdapter((getSite(), request), IAbsoluteURL)
-    url = '%s/++noop++%s/@@/%s' % (base_url, hash, library.name)
+    url = '%s/@@/++noop++%s/%s' % (base_url, hash, library.name)
 
     if nothashed:
        url = str(getMultiAdapter((getSite(), request),

Modified: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_mf.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_mf.py	2009-11-19 16:42:31 UTC (rev 105883)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_mf.py	2009-11-19 17:51:07 UTC (rev 105884)
@@ -46,7 +46,7 @@
    >>> from z3c.hashedresource.interfaces import IResourceContentsHash
    >>> hash = IResourceContentsHash(library)
    
-   >>> ajs = 'http://localhost/++noop++%s/@@/mylibrary/a.js' % hash
+   >>> ajs = 'http://localhost/@@/++noop++%s/mylibrary/a.js' % hash
    >>> browser.open(ajs)
    >>> print browser.contents
    /* Simple JS */
@@ -68,7 +68,7 @@
 
 """
 
-stag = '<script type="text/javascript" src="http://localhost/simpleapp/++noop++%s/@@/mylibrary/a.js"></script>'
+stag = '<script type="text/javascript" src="http://localhost/simpleapp/@@/++noop++%s/mylibrary/a.js"></script>'
 
 import grokcore.component as grok
 import grokcore.view as view
@@ -88,6 +88,7 @@
     
 myjs = ResourceInclusion(MyLibrary, 'a.js')    
 
+
 class SimpleView(view.View):
     grok.context(Interface)
     resource.need(myjs)

Deleted: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py	2009-11-19 16:42:31 UTC (rev 105883)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py	2009-11-19 17:51:07 UTC (rev 105884)
@@ -1,16 +0,0 @@
-import martian
-import megrok.resource as mr
-import grokcore.component as grok
-import grokcore.view
-
-from hurry.resource import ResourceInclusion
-from megrok.resource.directive import default_library_name, default_list
-
-
-class LibraryGrokker(martian.ClassGrokker):
-    martian.component(mr.Library)
-    martian.directive(grok.name, get_default=default_library_name)
-
-    def execute(self, klass, config, name, **kw):
-        klass.name = name
-        return True    



More information about the checkins mailing list