[Checkins] SVN: Sandbox/cklinger/megrok.resource/trunk/ added z3c.hashedresource and more tests
Christian Klinger
cklinger at novareto.de
Wed Nov 18 04:26:50 EST 2009
Log message for revision 105804:
added z3c.hashedresource and more tests
Changed:
U Sandbox/cklinger/megrok.resource/trunk/setup.py
U Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml
U Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py
A Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_hashedresource.py
U Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py
U Sandbox/cklinger/megrok.resource/trunk/versions.cfg
-=-
Modified: Sandbox/cklinger/megrok.resource/trunk/setup.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/setup.py 2009-11-18 09:23:01 UTC (rev 105803)
+++ Sandbox/cklinger/megrok.resource/trunk/setup.py 2009-11-18 09:26:50 UTC (rev 105804)
@@ -3,8 +3,6 @@
version = '0.1'
-
-
setup(name='megrok.resource',
version=version,
description="Grok Resources based on hurry.resource",
@@ -30,6 +28,8 @@
'grokcore.component',
'grokcore.view',
'hurry.zoperesource',
+ 'zope.app.zcmlfiles',
+ 'z3c.hashedresource',
# -*- Extra requirements: -*-
],
extras_require={'test': ['hurry.jquery',],},
Modified: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml 2009-11-18 09:23:01 UTC (rev 105803)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml 2009-11-18 09:26:50 UTC (rev 105804)
@@ -6,6 +6,8 @@
<include package="grokcore.component" file="meta.zcml" />
<include package="hurry.zoperesource" />
+ <include package="z3c.hashedresource" />
+ <include package="z3c.hashedresource" />
<grok:grok package=".event" />
<grok:grok package=".meta" />
<grok:grok package=".utils" />
Modified: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py 2009-11-18 09:23:01 UTC (rev 105803)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py 2009-11-18 09:26:50 UTC (rev 105804)
@@ -11,6 +11,10 @@
return factory.__name__.lower()
+class hashed(martian.MarkerDirective):
+ scope = martian.CLASS_OR_MODULE
+
+
class inclusion(martian.Directive):
scope = martian.CLASS
store = martian.MULTIPLE
Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_hashedresource.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_hashedresource.py (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_hashedresource.py 2009-11-18 09:26:50 UTC (rev 105804)
@@ -0,0 +1,77 @@
+"""
+megrok.resource
+===============
+
+
+Setup
+-----
+
+ >>> from zope.app.testing.functional import getRootFolder
+ >>> from zope.app.container import btree
+ >>> from zope.app.component.site import LocalSiteManager
+ >>> from zope.app.component.hooks import setSite
+
+ >>> root = getRootFolder()
+ >>> root['application'] = Application()
+
+
+Inclusion with z3c.hashedresource
+---------------------------------
+
+Here we proof if we get the resource "a.js" in the context
+of a hashedresource.
+
+ >>> from zope.testbrowser.testing import Browser
+ >>> browser = Browser()
+ >>> browser.open('http://localhost/application/withhash')
+ >>> print browser.contents
+ <html>
+ <head>
+ <script type="text/javascript"
+ src="http://localhost/@@/hasedstyles/++noop++05d3614435a4164676867ad1f1320cd2/@@/hasedstyles/a.js"></script>
+ </head>
+ <body>
+ <h1> HI GROK </h1>
+ </body>
+ </html>
+"""
+
+
+import grokcore.component as grok
+import grokcore.view as view
+
+from zope.interface import Interface
+from megrok.resource import Library, include, inclusion, hashed
+from hurry.resource import ResourceInclusion
+
+from zope.app.container import btree
+
+from zope.app.component.site import SiteManagerContainer
+
+#class Application(btree.BTreeContainer):
+class Application(SiteManagerContainer):
+ """ Sample Application """
+
+class HashedStyles(Library):
+ view.path('css')
+ grok.name('hasedstyles')
+ hashed()
+ inclusion(name='JS', file='a.js')
+
+
+class WithHash(view.View):
+ grok.context(Interface)
+ include(HashedStyles, 'JS')
+ template = view.PageTemplateFile('templates/myview.pt')
+
+
+###TestSetup
+def test_suite():
+ from zope.testing import doctest
+ from megrok.resource.ftests import FunctionalLayer
+ suite = doctest.DocTestSuite(
+ optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS
+ )
+ suite.layer = FunctionalLayer
+ return suite
+
Modified: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py 2009-11-18 09:23:01 UTC (rev 105803)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py 2009-11-18 09:26:50 UTC (rev 105804)
@@ -6,15 +6,31 @@
from zope.app.component.hooks import getSite
from zope.traversing.browser.interfaces import IAbsoluteURL
from hurry.zoperesource.zopesupport import getRequest
-
-from megrok.resource import Library
+from z3c.hashedresource.interfaces import IResourceContentsHash
+from megrok.resource import Library, hashed
from zope.interface import Interface
+#@grok.adapter(Library)
@grok.adapter(Interface)
@grok.implementer(ILibraryUrl)
def library_url(library):
request = getRequest()
- return str(component.getMultiAdapter((getSite(), request),
+ is_hashed = hashed.bind().get(library)
+ url = str(component.getMultiAdapter((getSite(), request),
IAbsoluteURL)) + '/@@/' + library.name
+ if is_hashed:
+ resource = component.getAdapter(request, name=library.name)
+ hash = IResourceContentsHash(resource)
+ base_url = component.getMultiAdapter((getSite(), request), IAbsoluteURL)
+ url = '%s/++noop++%s/@@/%s' % (url, hash, library.name)
+
+ return url
+
+#@grok.adapter(Interface)
+#@grok.implementer(ILibraryUrl)
+#def library_url(library):
+# request = getRequest()
+# return str(component.getMultiAdapter((getSite(), request),
+# IAbsoluteURL)) + '/@@/' + library.name
Modified: Sandbox/cklinger/megrok.resource/trunk/versions.cfg
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/versions.cfg 2009-11-18 09:23:01 UTC (rev 105803)
+++ Sandbox/cklinger/megrok.resource/trunk/versions.cfg 2009-11-18 09:26:50 UTC (rev 105804)
@@ -1,114 +1,194 @@
[versions]
-ClientForm = 0.2.9
+# grok related
grokcore.annotation = 1.1
grokcore.component = 1.7
grokcore.formlib = 1.4
grokcore.security = 1.2
grokcore.site = 1.1
grokcore.startup = 0.4
-grokcore.view = 1.12.2
+grokcore.view = 1.13a1
grokcore.viewlet = 1.3
grokui.admin = 0.3.2
martian = 0.11.1
-mechanize = 0.1.7b
-pytz = 2009l
-RestrictedPython = 3.4.2
+Paste = 1.7.2
+PasteDeploy = 1.3.3
+PasteScript = 1.7.3
simplejson = 2.0.9
-z3c.autoinclude = 0.2.2
+z3c.autoinclude = 0.3.1
+z3c.evalexception = 2.0
z3c.flashmessage = 1.0
+z3c.recipe.dev = 0.5.4
z3c.recipe.eggbasket = 0.4.3
-z3c.testsetup = 0.4
-zc.catalog = 1.2.0
-ZConfig = 2.5.1
-zc.recipe.testrunner = 1.0.0
-zdaemon = 2.0.2
-ZODB3 = 3.8.3
-zodbcode = 3.4.0
-zope.annotation = 3.4.1
-zope.app.apidoc = 3.4.3
-zope.app.applicationcontrol = 3.4.3
-zope.app.appsetup = 3.4.1
-zope.app.authentication = 3.4.4
-zope.app.basicskin = 3.4.0
-zope.app.broken = 3.4.0
-zope.app.catalog = 3.5.1
-zope.app.component = 3.4.1
-zope.app.container = 3.5.6
+z3c.recipe.mkdir = 0.3.1
+z3c.recipe.template = 0.1
+z3c.testsetup = 0.5.1
+zc.catalog = 1.4.1
+zest.releaser = 2.10
+zope.app.session = 3.6.0
+
+# ZTK
+# http://svn.zope.org/*checkout*/zopetoolkit/trunk/ztk.cfg?rev=105741
+z3c.recipe.compattest = 0.8.0
+zope.annotation = 3.5.0
+zope.app.apidoc = 3.6.7
+zope.app.applicationcontrol = 3.5.1
+zope.app.appsetup = 3.12.0
+zope.app.authentication = 3.6.1
+zope.app.basicskin = 3.4.1
+zope.app.boston = 3.4.0
+zope.app.broken = 3.5.0
+zope.app.cache = 3.7.0
+zope.app.catalog = 3.8.0
+zope.app.component = 3.8.3
zope.app.content = 3.4.0
+zope.app.dav = 3.5.1
zope.app.debug = 3.4.1
+zope.app.debugskin = 3.4.0
zope.app.dependable = 3.4.0
-zope.app.error = 3.5.1
-zope.app.exception = 3.4.1
-zope.app.file = 3.4.4
-zope.app.folder = 3.4.0
-zope.app.form = 3.4.1
-zope.app.generations = 3.4.1
-zope.app.http = 3.4.1
-zope.app.i18n = 3.4.4
-zope.app.interface = 3.4.0
-zope.app.intid = 3.4.1
-zope.app.keyreference = 3.4.1
-zope.app.locales = 3.4.5
-zope.app.onlinehelp = 3.4.1
-zope.app.pagetemplate = 3.4.1
-zope.app.preference = 3.4.1
-zope.app.principalannotation = 3.4.0
-zope.app.publication = 3.4.3
-zope.app.publisher = 3.5.1
-zope.app.renderer = 3.4.0
-zope.app.rotterdam = 3.4.1
-zope.app.schema = 3.4.0
-zope.app.security = 3.5.2
-zope.app.securitypolicy = 3.4.6
+zope.app.dtmlpage = 3.5.0
+zope.app.error = 3.5.2
+zope.app.exception = 3.5.0
+zope.app.externaleditor = 3.5.0
+zope.app.file = 3.5.0
+zope.app.form = 3.8.1
+zope.app.ftp = 3.5.0
+zope.app.generations = 3.5.0
+zope.app.homefolder = 3.5.0
+zope.app.http = 3.6.0
+zope.app.i18n = 3.6.2
+zope.app.i18nfile = 3.4.1
+zope.app.interpreter = 3.4.0
+zope.app.locales = 3.5.1
+zope.app.locking = 3.5.0
+zope.app.onlinehelp = 3.5.1
+zope.app.pagetemplate = 3.7.1
+zope.app.preference = 3.6.0
+zope.app.preview = 3.4.0
+zope.app.principalannotation = 3.6.1
+zope.app.publication = 3.9.0
+zope.app.publisher = 3.10.0
+zope.app.pythonpage = 3.5.1
+zope.app.renderer = 3.5.1
+zope.app.rotterdam = 3.5.0
+zope.app.schema = 3.5.0
+zope.app.security = 3.7.2
+zope.app.securitypolicy = 3.5.1
zope.app.server = 3.4.2
-zope.app.session = 3.5.1
-zope.app.skins = 3.4.0
-zope.app.testing = 3.4.3
-zope.app.tree = 3.4.0
-zope.app.twisted = 3.4.1
-zope.app.wsgi = 3.4.2
-zope.app.zapi = 3.4.0
-zope.app.zcmlfiles = 3.4.3
-zope.app.zopeappgenerations = 3.4.0
-zope.cachedescriptors = 3.4.1
-zope.component = 3.4.0
-zope.configuration = 3.4.0
-zope.contentprovider = 3.4.0
-zope.contenttype = 3.4.0
-zope.copypastemove = 3.4.0
+zope.app.sqlscript = 3.5.0
+zope.app.testing = 3.7.3
+zope.app.tree = 3.6.0
+zope.app.twisted = 3.5.0
+zope.app.undo = 3.5.0
+zope.app.wsgi = 3.6.0
+zope.app.xmlrpcintrospection = 3.5.0
+zope.app.zcmlfiles = 3.6.0
+zope.app.zopeappgenerations = 3.5.0
+zope.app.zptpage = 3.5.0
+zope.browsermenu = 3.9.0
+zope.browserpage = 3.9.0
+zope.browserresource = 3.9.0
+zope.cachedescriptors = 3.5.0
+zope.catalog = 3.8.0
+zope.component = 3.8.0
+zope.configuration = 3.6.0
+zope.container = 3.9.0
+zope.contentprovider = 3.5.0
+zope.contenttype = 3.4.2
+zope.copy = 3.5.0
+zope.copypastemove = 3.5.2
zope.datetime = 3.4.0
-zope.deferredimport = 3.4.0
+zope.deferredimport = 3.5.0
zope.deprecation = 3.4.0
-zope.dottedname = 3.4.2
-zope.dublincore = 3.4.0
-zope.error = 3.5.1
-zope.event = 3.4.0
-zope.exceptions = 3.4.0
-zope.filerepresentation = 3.4.0
-zope.formlib = 3.4.0
-zope.hookable = 3.4.0
-zope.i18n = 3.4.0
-zope.i18nmessageid = 3.4.3
-zope.index = 3.4.1
-zope.interface = 3.4.1
-zope.lifecycleevent = 3.4.0
-zope.location = 3.4.0
-zope.minmax = 1.1.0
+zope.documenttemplate = 3.4.2
+zope.dottedname = 3.4.6
+zope.dublincore = 3.5.0
+zope.error = 3.7.0
+zope.event = 3.4.1
+zope.exceptions = 3.5.2
+zope.file = 0.5.0
+zope.filerepresentation = 3.5.0
+zope.formlib = 3.6.0
+zope.hookable = 3.4.1
+zope.html = 2.0.0
+zope.i18n = 3.7.1
+zope.i18nmessageid = 3.5.0
+zope.index = 3.6.0
+zope.interface = 3.5.2
+zope.intid = 3.7.1
+zope.keyreference = 3.6.2
+zope.lifecycleevent = 3.5.2
+zope.location = 3.7.0
+zope.mimetype = 1.1.2
+zope.minmax = 1.1.1
zope.modulealias = 3.4.0
-zope.pagetemplate = 3.4.0
-zope.proxy = 3.4.2
-zope.publisher = 3.4.9
-zope.schema = 3.4.0
-zope.security = 3.4.1
-zope.securitypolicy = 3.4.1
-zope.server = 3.4.3
-zope.session = 3.4.1
-zope.size = 3.4.0
+zope.pagetemplate = 3.5.0
+zope.proxy = 3.5.0
+zope.ptresource = 3.9.0
+zope.publisher = 3.9.3
+zope.ramcache = 1.0
+zope.rdb = 3.5.0
+zope.schema = 3.5.4
+zope.security = 3.7.1
+zope.securitypolicy = 3.6.1
+zope.sendmail = 3.6.1
+zope.sequencesort = 3.4.0
+zope.server = 3.6.1
+zope.session = 3.9.1
+zope.site = 3.7.0
+zope.size = 3.4.1
zope.structuredtext = 3.4.0
-zope.tal = 3.4.1
+zope.tal = 3.5.1
zope.tales = 3.4.0
-zope.testbrowser = 3.4.2
-zope.testing = 3.7.6
+zope.testbrowser = 3.7.0a1
+zope.testing = 3.8.3
+zope.traversing = 3.8.0
+zope.viewlet = 3.6.1
+zope.xmlpickle = 3.4.0
+
+# Dependencies:
+
+ClientForm = 0.2.10
+docutils = 0.5
+infrae.subversion = 1.4.5
+Jinja2 = 2.1.1
+lxml = 2.2.2
+mechanize = 0.1.11
+py = 1.0.0
+Pygments = 1.1
+python-dateutil = 1.4.1
+python-gettext = 1.0
+pytz = 2009l
+RestrictedPython = 3.5.1
+roman = 1.4.0
+setuptools = 0.6c11
+Sphinx = 0.6.3
+transaction = 1.0.0
+z3c.recipe.sphinxdoc = 0.0.8
+zc.buildout = 1.4.1
+zc.lockfile = 1.0.0
+ZConfig = 2.7.1
+zc.recipe.egg = 1.2.2
+zc.recipe.testrunner = 1.2.0
+zc.resourcelibrary = 1.3.0
+zc.sourcefactory = 0.6.0
+zdaemon = 2.0.4
+ZODB3 = 3.9.3
+zodbcode = 3.4.0
+zope.app.container = 3.8.0
+zope.app.folder = 3.5.1
+zope.app.interface = 3.5.0
+zope.app.intid = 3.7.0
+zope.app.keyreference = 3.6.0
+zope.app.localpermission = 3.7.0
+zope.app.skins = 3.4.0
+zope.authentication = 3.7.0
+zope.broken = 3.5.0
+zope.browser = 1.2
+zope.componentvocabulary = 1.0
+zope.kgs = 1.2.0
+zope.password = 3.5.1
+zope.principalannotation = 3.6.0
+zope.principalregistry = 3.7.0
+zope.processlifetime = 1.0
zope.thread = 3.4
-zope.traversing = 3.4.1
-zope.viewlet = 3.4.2
+
More information about the checkins
mailing list