[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