[Checkins] SVN: megrok.resourceviewlet/trunk/ Preparing release 0.1
Souheil CHELFOUH
souheil at chelfouh.com
Thu Dec 24 10:02:50 EST 2009
Log message for revision 107053:
Preparing release 0.1
Changed:
U megrok.resourceviewlet/trunk/docs/HISTORY.txt
U megrok.resourceviewlet/trunk/setup.py
U megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/README.txt
U megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/__init__.py
U megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py
U megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/ftesting.zcml
U megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/test_general.py
-=-
Modified: megrok.resourceviewlet/trunk/docs/HISTORY.txt
===================================================================
--- megrok.resourceviewlet/trunk/docs/HISTORY.txt 2009-12-24 11:18:05 UTC (rev 107052)
+++ megrok.resourceviewlet/trunk/docs/HISTORY.txt 2009-12-24 15:02:50 UTC (rev 107053)
@@ -0,0 +1,7 @@
+Changelog
+=========
+
+0.1 (2009-12-24)
+----------------
+
+* Initial release
Modified: megrok.resourceviewlet/trunk/setup.py
===================================================================
--- megrok.resourceviewlet/trunk/setup.py 2009-12-24 11:18:05 UTC (rev 107052)
+++ megrok.resourceviewlet/trunk/setup.py 2009-12-24 15:02:50 UTC (rev 107053)
@@ -10,26 +10,30 @@
readme = open(join('src', 'megrok', 'resourceviewlet', 'README.txt')).read()
test_requires = [
+ 'grokcore.view',
'zope.app.testing',
'zope.app.zcmlfiles',
+ 'zope.contentprovider',
+ 'zope.testbrowser',
+ 'zope.testing',
]
-setup(name = name,
- version = version,
- description = 'Grok component to include resources.',
- long_description = readme + '\n\n' + history,
- keywords = 'Grok Zope3 CMS Resources',
- author = 'Souheil Chelfouh',
- author_email = 'trollfot at gmail.com',
- url = 'http://tracker.trollfot.org/',
- download_url = '',
- license = 'GPL',
+setup(name=name,
+ version=version,
+ description='Grok component to include resources.',
+ long_description=readme + '\n\n' + history,
+ keywords='Grok Zope3 CMS Resources',
+ author='Souheil Chelfouh',
+ author_email='trollfot at gmail.com',
+ url='http://tracker.trollfot.org/',
+ download_url='',
+ license='GPL',
packages=find_packages('src', exclude=['ez_setup']),
package_dir={'': 'src'},
- namespace_packages = ['megrok'],
- include_package_data = True,
- platforms = 'Any',
- zip_safe = False,
+ namespace_packages=['megrok'],
+ include_package_data=True,
+ platforms='Any',
+ zip_safe=False,
install_requires=[
'hurry.resource',
'grokcore.viewlet',
@@ -40,7 +44,7 @@
'zope.viewlet',
],
extras_require={'test': test_requires},
- classifiers = [
+ classifiers=[
'Development Status :: 4 - Beta',
'Environment :: Web Environment',
'Framework :: Zope3',
Modified: megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/README.txt
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/README.txt 2009-12-24 11:18:05 UTC (rev 107052)
+++ megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/README.txt 2009-12-24 15:02:50 UTC (rev 107053)
@@ -2,7 +2,9 @@
megrok.resourceviewlet
======================
-`megrok.resourceviewlet`
+`megrok.resourceviewlet` is a package meant to include resources
+using layer, context and view discriminations (site-wide resources
+like javascripts or CSS or content-centric resources).
Setup
=====
@@ -20,6 +22,8 @@
Library
=======
+We first declare a resource. We'll include it in our page::
+
>>> from megrok import resource
>>> class SomeResource(resource.ResourceLibrary):
... resource.path('ftests/resources')
@@ -32,12 +36,13 @@
Components
==========
-View
-----
+To demonstrate our resource viewlet, we first need a page to
+render. This page contains a content provider named 'resources'::
>>> from zope.interface import Interface
>>> class Index(view.View):
+ ... view.require("zope.Public")
... view.context(Interface)
...
... template = view.PageTemplate("""<html><head>
@@ -51,12 +56,15 @@
Manager
-------
- >>> from megrok.resourceviewlet import InclusionViewletManager
+We now register a content provider named 'resources'. It will be a
+ResourcesManager. An ResourcesManager is a component
+dedicated in rendering ResourceViewlets::
- >>> class Resources(InclusionViewletManager):
+ >>> from megrok.resourceviewlet import ResourcesManager
+
+ >>> class Resources(ResourcesManager):
... viewlet.context(Interface)
- ... viewlet.view(Index)
-
+
>>> grok.testing.grok_component('resources', Resources)
True
@@ -64,20 +72,30 @@
Viewlet
-------
+Now, we register a ResourceViewlet, including our resource. The
+declaration is very straightforward::
+
>>> from megrok.resourceviewlet import ResourceViewlet
>>> class SomeViewlet(ResourceViewlet):
- ... viewlet.viewletmanager(Resources)
... viewlet.context(Interface)
... resources = [SomeResource]
>>> grok.testing.grok_component('viewlet', SomeViewlet)
True
+By default, a ResourceViewlet is registered for an instance of
+ResourcesManager. Most of the time, a page contains only one of
+these content providers. If it's not the case, make sure to provide
+your own `viewletmanager` directive value.
+
Rendering
----------
+=========
+Rendering our page should render the ResourcesManager and
+therefore, include our resource::
+
>>> browser.open('http://localhost/@@index')
>>> print browser.contents
<html><head>
@@ -85,3 +103,5 @@
type="text/javascript"
src="http://localhost/@@/++noop++.../someresource/thing.js"></script>
</head></html>
+
+It works ! Enjoy.
Modified: megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/__init__.py
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/__init__.py 2009-12-24 11:18:05 UTC (rev 107052)
+++ megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/__init__.py 2009-12-24 15:02:50 UTC (rev 107053)
@@ -1,2 +1 @@
-from megrok.resourceviewlet.components import (
- IResourceViewlet, InclusionViewletManager, ResourceViewlet)
+from megrok.resourceviewlet.components import ResourcesManager, ResourceViewlet
Modified: megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py 2009-12-24 11:18:05 UTC (rev 107052)
+++ megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py 2009-12-24 15:02:50 UTC (rev 107053)
@@ -1,12 +1,9 @@
# -*- coding: utf-8 -*-
-import grokcore.component as grok
+import grokcore.viewlet as grok
from grokcore.viewlet.components import ViewletManager, Viewlet
-from grokcore.viewlet.interfaces import IViewletManager
from hurry.resource.interfaces import IInclusion
-
-from zope.interface import Interface
from zope.schema import List, Object
from zope.schema.fieldproperty import FieldProperty
from zope.viewlet.interfaces import IViewlet
@@ -17,20 +14,17 @@
"""A viewlet which sole purpose is to include resources.
"""
resources = List(
- title = u"Resources to be included",
- required = True,
- value_type = Object(
- schema = IInclusion,
- )
- )
-
+ title=u"Resources to be included",
+ required=True,
+ value_type=Object(schema=IInclusion))
+
def render(self):
- """Calling this method will 'need' the resources.
+ """Calling this method will include the resources.
The return value will *not* be taken in consideration.
"""
-class InclusionViewletManager(ViewletManager):
+class ResourcesManager(ViewletManager):
"""A manager which sole purpose is to render ResourceViewlets.
"""
grok.baseclass()
@@ -63,6 +57,8 @@
"""
grok.baseclass()
grok.implements(IResourceViewlet)
+ grok.viewletmanager(ResourcesManager)
+
resources = FieldProperty(IResourceViewlet['resources'])
def __init__(self, context, request, view, manager):
Modified: megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/ftesting.zcml
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/ftesting.zcml 2009-12-24 11:18:05 UTC (rev 107052)
+++ megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/ftesting.zcml 2009-12-24 15:02:50 UTC (rev 107053)
@@ -6,27 +6,11 @@
<include package="grokcore.view" file="meta.zcml" />
<include package="grokcore.viewlet" file="meta.zcml" />
<include package="zope.app.zcmlfiles" file="meta.zcml" />
- <include package="zope.securitypolicy" file="meta.zcml" />
<include package="zope.contentprovider" />
<include package="zope.app.zcmlfiles" />
- <include package="zope.app.authentication" />
<include package="grokcore.view" />
<include package="grokcore.viewlet" />
<include package="megrok.resource" />
- <securityPolicy
- component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
- />
-
- <unauthenticatedPrincipal
- id="zope.anybody"
- title="Unauthenticated User"
- />
-
- <grant
- permission="zope.View"
- principal="zope.anybody"
- />
-
</configure>
Modified: megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/test_general.py
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/test_general.py 2009-12-24 11:18:05 UTC (rev 107052)
+++ megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/ftests/test_general.py 2009-12-24 15:02:50 UTC (rev 107053)
@@ -2,9 +2,8 @@
import os.path
import unittest
-from zope.app.testing import functional
from zope.testing import doctest, module
-from zope.publisher.browser import TestRequest
+from zope.app.testing import functional
from zope.app.testing.functional import ZCMLLayer
ftesting_zcml = os.path.join(os.path.dirname(__file__), 'ftesting.zcml')
More information about the checkins
mailing list