[Checkins] SVN: megrok.resourceviewlet/trunk/src/ Added base code.

Souheil CHELFOUH souheil at chelfouh.com
Wed Dec 23 19:43:08 EST 2009


Log message for revision 107032:
  Added base code.
  

Changed:
  A   megrok.resourceviewlet/trunk/src/
  A   megrok.resourceviewlet/trunk/src/megrok/
  A   megrok.resourceviewlet/trunk/src/megrok/__init__.py
  A   megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/
  A   megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/__init__.py
  A   megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py
  A   megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/tests.py

-=-
Added: megrok.resourceviewlet/trunk/src/megrok/__init__.py
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/__init__.py	                        (rev 0)
+++ megrok.resourceviewlet/trunk/src/megrok/__init__.py	2009-12-24 00:43:07 UTC (rev 107032)
@@ -0,0 +1,5 @@
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)

Added: megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py	                        (rev 0)
+++ megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/components.py	2009-12-24 00:43:07 UTC (rev 107032)
@@ -0,0 +1,83 @@
+# -*- coding: utf-8 -*-
+
+import grokcore.component as grok
+
+from hurry.resource import IInclusion
+from grokcore.viewlet.component import ViewletManager, Viewlet
+from grokcore.viewlet.interfaces import IViewletManager
+
+from zope.schema import List, Object
+from zope.schema.fieldproperty import FieldProperty
+from zope.interface import Interface
+from zope.viewlet.interfaces import IViewlet
+from zope.viewlet.manager import ViewletManagerBase
+
+
+class IResourceViewlet(IViewlet):
+    """A viewlet which sole purpose is to include resources.
+    """
+    resources = List(
+        title = u"Resources to be included",
+        required = True,
+        value_type = Object(
+            schema = IInclusion,
+            )
+        )
+    
+    def render(self):
+        """Calling this method will 'need' the resources.
+        The return value will *not* be taken in consideration.
+        """
+
+
+class InclusionViewletManager(ViewletManager):
+    """A manager which sole purpose is to render ResourceViewlets.
+    """
+    grok.baseclass()
+
+    def __init__(self, context, request, view):
+        self.context = context
+        self.request = request
+        self.view = view
+
+    def sort(self, viewlets):
+        return viewlets
+
+    def default_namespace(self):
+        raise NotImplementedError(
+            "No template can be associated to this component")
+
+    def namespace(self):
+        raise NotImplementedError(
+            "No template can be associated to this component")
+
+    def render(self):
+        for viewlet in self.viewlets:
+            if IResourceViewlet.providedBy(viewlet):
+                viewlet.render()
+
+
+class ResourceViewlet(Viewlet):
+    """A viewlet including resources.
+    """
+    grok.baseclass()
+    grok.implements(IResourceViewlet)
+    resources = FieldProperty(IResourceViewlet['resources'])
+
+    def __init__(self, context, request, view, manager):
+        pass
+
+    def default_namespace(self):
+        raise NotImplementedError(
+            "No template can be associated to this component")
+
+    def namespace(self):
+        raise NotImplementedError(
+            "No template can be associated to this component")
+
+    def update(self):
+        pass
+
+    def render(self):
+        for resource in resources:
+            resource.need()

Added: megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/tests.py
===================================================================
--- megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/tests.py	                        (rev 0)
+++ megrok.resourceviewlet/trunk/src/megrok/resourceviewlet/tests.py	2009-12-24 00:43:07 UTC (rev 107032)
@@ -0,0 +1,27 @@
+# -*- coding: utf-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.functional import ZCMLLayer
+
+ftesting_zcml = os.path.join(os.path.dirname(__file__), 'ftesting.zcml')
+FunctionalLayer = ZCMLLayer(
+    ftesting_zcml, __name__, 'FunctionalLayer', allow_teardown=True)
+
+
+def setUp(test):
+    module.setUp(test, 'megrok.resourceviewlet.tests')
+
+def tearDown(test):
+    module.tearDown(test)
+
+def test_suite():
+    suite = unittest.TestSuite()      
+    readme = functional.FunctionalDocFileSuite(
+        'README.txt', setUp=setUp, tearDown=tearDown)
+    readme.layer = FunctionalLayer
+    suite.addTest(readme)
+    return suite



More information about the checkins mailing list