[Checkins] SVN: grok/branches/jw-simpler-skin-registration/src/grok/meta.py Complete grokker and make ftests pass.

Philipp von Weitershausen philikon at philikon.de
Fri Aug 1 08:56:59 EDT 2008


Log message for revision 89140:
  Complete grokker and make ftests pass.
  

Changed:
  U   grok/branches/jw-simpler-skin-registration/src/grok/meta.py

-=-
Modified: grok/branches/jw-simpler-skin-registration/src/grok/meta.py
===================================================================
--- grok/branches/jw-simpler-skin-registration/src/grok/meta.py	2008-08-01 12:55:15 UTC (rev 89139)
+++ grok/branches/jw-simpler-skin-registration/src/grok/meta.py	2008-08-01 12:56:56 UTC (rev 89140)
@@ -763,20 +763,25 @@
 class SkinInterfaceDirectiveGrokker(martian.InstanceGrokker):
     martian.component(InterfaceClass)
 
-    def grok(self, name, factory, module_info, config, **kw):
-        skin = grok.skin.bind(default=_skin_not_used).get(factory)
+    def grok(self, name, interface, module_info, config, **kw):
+        skin = grok.skin.bind(default=_skin_not_used).get(interface)
         if skin is _skin_not_used:
             # The skin directive is not actually used on the found interface.
             return False
 
-        if not issubclass(factory, IBrowserRequest):
-            # For layers it is required to subclass IBrowserRequest.
+        if not interface.extends(IBrowserRequest):
+            # For layers it is required to extend IBrowserRequest.
             raise GrokError(
-                "The grok.skin() directive is used on interface %s. "
-                "However, %s does not subclass IBrowserRequest which is "
+                "The grok.skin() directive is used on interface %r. "
+                "However, %r does not subclass IBrowserRequest which is "
                 "required for interfaces that are used as layers and are to "
-                "be registered as a skin" % (factory, factory), factory)
-
-        # Now do the real stuff..
-
+                "be registered as a skin"
+                % (interface.__identifier__, interface.__identifier__),
+                interface
+                )
+        config.action(
+            discriminator=('utility', IBrowserSkinType, skin),
+            callable=zope.component.interface.provideInterface,
+            args=(skin, interface, IBrowserSkinType)
+            )
         return True



More information about the Checkins mailing list