[Checkins] SVN: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ Simplified the grokking. I'm not sure it's really needed anymore.
Souheil CHELFOUH
souheil at chelfouh.com
Wed Oct 14 11:30:25 EDT 2009
Log message for revision 105067:
Simplified the grokking. I'm not sure it's really needed anymore.
Using a simple classmethod on the Library to fetch the inclusions.
Changed:
U Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py
U Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py
U 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-10-14 14:25:25 UTC (rev 105066)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py 2009-10-14 15:30:25 UTC (rev 105067)
@@ -9,19 +9,41 @@
from zope.traversing.browser.interfaces import IAbsoluteURL
from hurry.zoperesource.zopesupport import getRequest
+from megrok.resource.directive import inclusion
+from zope.traversing.browser.absoluteurl import AbsoluteURL
+
+
+def inclusions(cls):
+ keys = []
+ values = []
+ resources = inclusion.bind().get(cls)
+ for name, file, depends, bottom in resources:
+ keys.append(name)
+ values.append(
+ ResourceInclusion(cls, file, depends=depends, bottom=bottom)
+ )
+ return keys, values
+
+
class Library(DirectoryResource):
- libs = []
+ grok.baseclass()
+
+ _ri_keys = None
+ _resources = None
- @property
- def name(self):
- return grok.name.bind().get(self)
+ @classmethod
+ def get_resources(cls, name=None):
+ if cls._resources == None:
+ cls._ri_keys, values = inclusions(cls)
+ cls._resources = dict(zip(cls._ri_keys, values))
+ if name is not None:
+ return [cls._resources[name],]
+ return [cls._resources[name] for name in cls._ri_keys]
@grok.adapter(Library)
@grok.implementer(ILibraryUrl)
def library_url(library):
request = getRequest()
- return str(component.getMultiAdapter((getSite(), request),
- IAbsoluteURL)) + '/@@/' + library.name
-
+ return "%s/@@/%s" % (AbsoluteURL(getSite(), request), library.name)
Modified: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py 2009-10-14 14:25:25 UTC (rev 105066)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py 2009-10-14 15:30:25 UTC (rev 105067)
@@ -13,12 +13,10 @@
for lib, name, bottom in includes:
if bottom:
with_bottom=True
- if not name:
- for l in lib.libs:
- inn = getattr(lib, l)
- inn.need()
- else:
- inn = getattr(lib, name)
- inn.need()
+
+ resources = lib.get_resources(name=name)
+ for resource in resources:
+ resource.need()
+
if with_bottom:
hurry.resource.bottom()
Modified: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py 2009-10-14 14:25:25 UTC (rev 105066)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py 2009-10-14 15:30:25 UTC (rev 105067)
@@ -2,27 +2,15 @@
import megrok.resource as mr
import grokcore.component as grok
import grokcore.view
-import grokcore.security
from hurry.resource import ResourceInclusion
-
from megrok.resource.directive import default_library_name, default_list
-from zope.publisher.interfaces.browser import (IDefaultBrowserLayer,
- IBrowserRequest)
+
class LibraryGrokker(martian.ClassGrokker):
martian.component(mr.Library)
martian.directive(grok.name, get_default=default_library_name)
- martian.directive(mr.inclusion, get_default=default_list)
- martian.directive(grokcore.view.layer, default=IDefaultBrowserLayer)
- martian.directive(grokcore.security.require, name='permission')
-
- def execute(self, class_, config, name, inclusion, layer, permission, **kw):
- #setattr(class_, 'name', name)
- class_.name = name
- for name, file, depends, bottom in inclusion:
- RI = ResourceInclusion(class_, file, depends=depends, bottom=bottom)
- setattr(class_, name, RI)
- class_.libs.append(name)
+ def execute(self, klass, config, name, **kw):
+ klass.name = name
return True
More information about the checkins
mailing list