[Checkins] SVN: grokcore.view/trunk/ Reduced dependencies by removing zope.app.zcmfiles.

Souheil CHELFOUH souheil at chelfouh.com
Mon Mar 8 14:34:03 EST 2010


Log message for revision 109844:
  Reduced dependencies by removing zope.app.zcmfiles.
  Rewrote a test to avoid useless dependencies.
  Cleaned the code to respect pep8 formatting.
  Removed the "default_fallback_to_name" function as required by bug #395061 on lauchpad.
  

Changed:
  U   grokcore.view/trunk/CHANGES.txt
  U   grokcore.view/trunk/buildout.cfg
  U   grokcore.view/trunk/setup.py
  U   grokcore.view/trunk/src/grokcore/view/components.py
  U   grokcore.view/trunk/src/grokcore/view/directive.py
  U   grokcore.view/trunk/src/grokcore/view/ftesting.zcml
  U   grokcore.view/trunk/src/grokcore/view/ftests/view/require.py
  U   grokcore.view/trunk/src/grokcore/view/ftests/view/skindirective.py
  U   grokcore.view/trunk/src/grokcore/view/interfaces.py
  U   grokcore.view/trunk/src/grokcore/view/meta/directoryresource.py
  U   grokcore.view/trunk/src/grokcore/view/meta/skin.py
  U   grokcore.view/trunk/src/grokcore/view/meta/templates.py
  U   grokcore.view/trunk/src/grokcore/view/meta/views.py
  U   grokcore.view/trunk/src/grokcore/view/templatereg.py
  U   grokcore.view/trunk/src/grokcore/view/testing.py
  U   grokcore.view/trunk/src/grokcore/view/util.py

-=-
Modified: grokcore.view/trunk/CHANGES.txt
===================================================================
--- grokcore.view/trunk/CHANGES.txt	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/CHANGES.txt	2010-03-08 19:33:58 UTC (rev 109844)
@@ -4,6 +4,13 @@
 2.0 (unreleased)
 ----------------
 
+- Fixed launchpad bug #395061 : removed the default_fallback_to_name
+  function. It can be imported from ``grokcore.security`` if needed.
+
+- ``grokcore.view`` no longer depends on ``zope.app.zcmlfiles``. We
+  removed all the extra dependencies and fixed one test that used
+  ``zope.app.rotterdam`` and ``zope.app.basicskin``.
+
 - Back-ported the changes of the 1.13 branch related to the directory
   resource registration, using the latest ztk packages.
 

Modified: grokcore.view/trunk/buildout.cfg
===================================================================
--- grokcore.view/trunk/buildout.cfg	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/buildout.cfg	2010-03-08 19:33:58 UTC (rev 109844)
@@ -13,6 +13,7 @@
 martian = 0.12
 grokcore.component = 2.0
 
+
 [interpreter]
 recipe = zc.recipe.egg
 eggs = grokcore.view

Modified: grokcore.view/trunk/setup.py
===================================================================
--- grokcore.view/trunk/setup.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/setup.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -21,20 +21,25 @@
     'zope.pagetemplate',
     'zope.ptresource >= 3.9.0',
     'zope.publisher',
-    'zope.schema',
     'zope.security',
     'zope.traversing',
     ]
 
 tests_require = [
-    'zope.app.authentication',
-    'zope.app.zcmlfiles',
+    'zope.app.testing',
     'zope.container',
     'zope.securitypolicy',
     'zope.site',
     'zope.testbrowser',
     'zope.testing',
     'zope.login',
+    'zope.app.testing',
+    'zope.configuration',
+    'zope.app.appsetup',
+    'zope.app.publication',
+    'zope.browserpage',
+    'zope.password',
+    'zope.principalregistry',
     ]
 
 setup(

Modified: grokcore.view/trunk/src/grokcore/view/components.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/components.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/components.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -21,11 +21,10 @@
 from zope import component
 from zope import interface
 from zope.browserresource import directory
-from zope.browserresource.file import FileResourceFactory
 from zope.browserresource.interfaces import IResourceFactoryFactory
 from zope.pagetemplate import pagetemplate, pagetemplatefile
 from zope.pagetemplate.engine import TrustedAppPT
-from zope.ptresource.ptresource import PageTemplateResourceFactory 
+from zope.ptresource.ptresource import PageTemplateResourceFactory
 from zope.publisher.browser import BrowserPage
 from zope.publisher.interfaces import NotFound
 from zope.publisher.publish import mapply
@@ -38,10 +37,11 @@
     """Mixin class providing methods and properties generally
     useful for view-ish components.
     """
+
     @property
     def response(self):
         return self.request.response
-    
+
     @property
     def body(self):
         return self.request.bodyStream.getCacheStream().read()
@@ -68,7 +68,7 @@
         elif name is not None and obj is None:
             # create URL to view on context
             obj = self.context
-            
+
         return util.url(self.request, obj, name, data)
 
 
@@ -83,8 +83,7 @@
             self.static = component.queryAdapter(
                 self.request,
                 interface.Interface,
-                name=self.module_info.package_dotted_name
-                )
+                name=self.module_info.package_dotted_name)
         else:
             self.static = None
 
@@ -127,7 +126,7 @@
                       "View %r, macro %s" % (self, key),
                       DeprecationWarning, 1)
         return value
-    
+
     def update(self, **kwargs):
         pass
 
@@ -140,6 +139,7 @@
 # please start using grokcore.view.View again.
 CodeView = View
 
+
 class BaseTemplate(object):
     """Any sort of page template"""
 
@@ -231,6 +231,7 @@
         self._template = TrustedFilePageTemplate(filename, _prefix)
 
     def _initFactory(self, factory):
+
         def _get_macros(self):
             return self.template._template.macros
         # _template.macros is a property that does template reloading in debug
@@ -247,6 +248,7 @@
 
 class PageTemplateFile(PageTemplate):
     # For BBB
+
     def __init__(self, filename, _prefix=None):
         self.__grok_module__ = martian.util.caller_module()
         if _prefix is None:
@@ -257,9 +259,10 @@
 
 _marker = object()
 
+
 class DirectoryResource(directory.DirectoryResource):
     forbidden_names = ('.svn', )
-    
+
     def get(self, name, default=_marker):
 
         for pat in self.forbidden_names:
@@ -268,7 +271,7 @@
                     raise NotFound(None, name)
                 else:
                     return default
-        
+
         path = self.context.path
         filename = os.path.join(path, name)
         isfile = os.path.isfile(filename)

Modified: grokcore.view/trunk/src/grokcore/view/directive.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/directive.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/directive.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -24,11 +24,14 @@
 def validateLocalPath(directive, value):
     martian.validateText(directive, value)
     if os.path.sep in value:
-        raise GrokImportError("The '%s' directive can not contain path separator."
-                               % directive.name)
+        raise GrokImportError(
+            "The '%s' directive can not contain path separator."
+            % directive.name)
 
+
 # Define grok directives
 
+
 class template(martian.Directive):
     scope = martian.CLASS
     store = martian.ONCE

Modified: grokcore.view/trunk/src/grokcore/view/ftesting.zcml
===================================================================
--- grokcore.view/trunk/src/grokcore/view/ftesting.zcml	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/ftesting.zcml	2010-03-08 19:33:58 UTC (rev 109844)
@@ -3,17 +3,31 @@
    xmlns:grok="http://namespaces.zope.org/grok"
    xmlns:browser="http://namespaces.zope.org/browser"
    i18n_domain="grokcore.view"
-   package="grokcore.view"
-   >
+   package="grokcore.view">
 
-  <include package="zope.app.zcmlfiles" file="meta.zcml" />
+  <include package="zope.component" file="meta.zcml" />
+  <include package="zope.security" file="meta.zcml" />
   <include package="zope.securitypolicy" file="meta.zcml" />
+  <include package="zope.principalregistry" file="meta.zcml" />
+  <include package="zope.publisher" file="meta.zcml" />
+  <include package="zope.browserpage" file="meta.zcml" />
+  <include package="zope.app.publication" file="meta.zcml" />
   <include package="grokcore.view" file="meta.zcml" />
+  
+  <include package="zope.security" />
+  <include package="zope.principalregistry" />
+  <include package="zope.login" />
+  <include package="zope.password" />
+  <include package="zope.site" />
+  <include package="zope.container" />
+  <include package="zope.publisher" />
+  <include package="zope.traversing" />
+  <include package="zope.browserresource" />
+  <include package="zope.traversing.browser" />
+  <include package="zope.app.appsetup" />
+  <include package="zope.app.publication" />
 
-  <include package="zope.app.zcmlfiles" />
-  <include package="zope.app.authentication" />
   <include package="grokcore.view" />
-  <include package="zope.login" />
   <grok:grok package="grokcore.view.ftests" />
 
   <securityPolicy

Modified: grokcore.view/trunk/src/grokcore/view/ftests/view/require.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/ftests/view/require.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/ftests/view/require.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -27,9 +27,11 @@
 import grokcore.view as grok
 import zope.interface
 
+
 class ViewPainting(grok.Permission):
     grok.name('cave.ViewPainting')
 
+
 class Painting(grok.View):
     grok.context(zope.interface.Interface)
     grok.require(ViewPainting)
@@ -37,6 +39,7 @@
     def render(self):
         return 'What a beautiful painting.'
 
+
 class PublicNudity(grok.View):
     grok.context(zope.interface.Interface)
     grok.require(grok.Public)

Modified: grokcore.view/trunk/src/grokcore/view/ftests/view/skindirective.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/ftests/view/skindirective.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/ftests/view/skindirective.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -4,58 +4,79 @@
   >>> from zope.testbrowser.testing import Browser
   >>> browser = Browser()
   >>> browser.handleErrors = False
-  >>> browser.open("http://localhost/++skin++Basic/manfred/@@cavedrawings")
+  >>> browser.open("http://localhost/++skin++casual/manfred/@@hello")
   >>> print browser.contents
   <html>
   <body>
-  <h1>Hello, world!</h1>
+  <h1>Hi sir !</h1>
   </body>
   </html>
 
-  >>> browser.open("http://localhost/++skin++Rotterdam/manfred/@@moredrawings")
+  >>> browser.open("http://localhost/++skin++party/manfred/@@happy")
   >>> print browser.contents
-  Pretty
+  Hee yay !
 
-  >>> browser.open("http://localhost/++skin++myskin/manfred/@@evenmoredrawings")
+  >>> browser.open("http://localhost/++skin++rainy/manfred/@@sad")
   >>> print browser.contents
-  Awesome
+  Aw... It rains.
 
 """
 import grokcore.view as grok
-from zope.app.basicskin import IBasicSkin
-from zope.app.rotterdam import rotterdam
 
-grok.layer(IBasicSkin)
 
-class MySkinLayer(grok.IBrowserRequest):
+class CasualLayer(grok.IBrowserRequest):
     pass
 
-class MySkin(MySkinLayer):
-    grok.skin('myskin')
 
+class PartyLayer(grok.IBrowserRequest):
+    pass
+
+
+class RainyLayer(grok.IBrowserRequest):
+    pass
+
+
+class PartySkin(PartyLayer):
+    grok.skin('party')
+
+
+class CasualSkin(CasualLayer):
+    grok.skin('casual')
+
+
+class RainySkin(RainyLayer):
+    grok.skin('rainy')
+
+
+grok.layer(CasualLayer)
+
+
 class Mammoth(grok.Context):
     pass
 
-class CaveDrawings(grok.View):
+
+class Hello(grok.View):
     pass
 
-cavedrawings = grok.PageTemplate("""\
+
+hello = grok.PageTemplate("""\
 <html>
 <body>
-<h1>Hello, world!</h1>
+<h1>Hi sir !</h1>
 </body>
 </html>
 """)
 
-class MoreDrawings(grok.View):
-    grok.layer(rotterdam)
 
+class Happy(grok.View):
+    grok.layer(PartyLayer)
+
     def render(self):
-        return "Pretty"
+        return u"Hee yay !"
 
 
-class EvenMoreDrawings(grok.View):
-    grok.layer(MySkinLayer)
+class Sad(grok.View):
+    grok.layer(RainyLayer)
 
     def render(self):
-        return "Awesome"
+        return u"Aw... It rains."

Modified: grokcore.view/trunk/src/grokcore/view/interfaces.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/interfaces.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/interfaces.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -22,6 +22,7 @@
     DirectoryResource = Attribute("Base class to create new "
                                   "directory resource.")
 
+
 class IDirectives(Interface):
 
     def layer(layer):
@@ -87,7 +88,7 @@
                        "the static files of the view's package.")
 
     def redirect(url):
-       """Redirect to given URL"""
+        """Redirect to given URL"""
 
     def url(obj=None, name=None, data=None):
         """Construct URL.
@@ -158,6 +159,7 @@
         _prefix is the directory the file is located in
         """
 
+
 class ITemplate(Interface):
     """Template objects
     """

Modified: grokcore.view/trunk/src/grokcore/view/meta/directoryresource.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/meta/directoryresource.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/meta/directoryresource.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -30,6 +30,7 @@
 
 allowed_resourcedir_names = allowed_resource_names + ('__getitem__', 'get')
 
+
 def _get_resource_path(module_info, path):
     resource_path = module_info.getResourcePath(path)
     if os.path.isdir(resource_path):
@@ -46,6 +47,7 @@
                     "'%s.py'" % (path, path), module_info.getModule())
     return resource_path
 
+
 def _register(config, resource_path, name, layer):
     # public checker by default
     checker = NamesChecker(allowed_resourcedir_names)
@@ -61,6 +63,7 @@
         )
     return True
 
+
 class DirectoryResourceGrokker(martian.ClassGrokker):
     martian.component(components.DirectoryResource)
 
@@ -80,6 +83,7 @@
         name = name or factory.module_info.dotted_name
         return _register(config, resource_path, name, layer)
 
+
 class StaticResourcesGrokker(martian.GlobalGrokker):
 
     def grok(self, name, module, module_info, config, **kw):
@@ -88,10 +92,10 @@
         if not module_info.isPackage():
             return False
         resource_path = _get_resource_path(module_info, 'static')
-        
+
         if not os.path.exists(resource_path):
             return False
-        
+
         name = module_info.dotted_name
         layer = IDefaultBrowserLayer
         return _register(config, resource_path, name, layer)

Modified: grokcore.view/trunk/src/grokcore/view/meta/skin.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/meta/skin.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/meta/skin.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -26,6 +26,7 @@
 
 _skin_not_used = object()
 
+
 class SkinInterfaceDirectiveGrokker(martian.InstanceGrokker):
     martian.component(InterfaceClass)
 
@@ -43,11 +44,10 @@
                 "required for interfaces that are used as layers and are to "
                 "be registered as a skin."
                 % (interface.__identifier__, interface.__identifier__),
-                interface
+                interface,
                 )
         config.action(
             discriminator=('utility', IBrowserSkinType, skin),
             callable=zope.component.interface.provideInterface,
-            args=(skin, interface, IBrowserSkinType)
-            )
+            args=(skin, interface, IBrowserSkinType))
         return True

Modified: grokcore.view/trunk/src/grokcore/view/meta/templates.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/meta/templates.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/meta/templates.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -42,12 +42,12 @@
         config.action(
             discriminator=None,
             callable=templates.register,
-            args=(name, instance)
+            args=(name, instance),
             )
         config.action(
             discriminator=None,
             callable=instance._annotateGrokInfo,
-            args=(name, module_info.dotted_name)
+            args=(name, module_info.dotted_name),
             )
         return True
 
@@ -65,7 +65,7 @@
         config.action(
             discriminator=None,
             callable=templates.findFilesystem,
-            args=(module_info,)
+            args=(module_info,),
             )
         return True
 
@@ -81,7 +81,6 @@
         config.action(
             discriminator=None,
             callable=templates.checkUnassociated,
-            args=(module_info,)
+            args=(module_info,),
             )
         return True
-

Modified: grokcore.view/trunk/src/grokcore/view/meta/views.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/meta/views.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/meta/views.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -26,13 +26,11 @@
 from grokcore.security.util import protect_getattr
 from grokcore.view import components
 
+
 def default_view_name(factory, module=None, **data):
     return factory.__name__.lower()
 
-def default_fallback_to_name(factory, module, name, **data):
-    return name
 
-
 class ViewGrokker(martian.ClassGrokker):
     martian.component(components.View)
     martian.directive(grokcore.component.context,
@@ -53,7 +51,7 @@
             config.action(
                 discriminator=None,
                 callable=self.checkTemplates,
-                args=(templates, factory.module_info, factory)
+                args=(templates, factory.module_info, factory),
                 )
 
         # safety belt: make sure that the programmer didn't use
@@ -86,7 +84,7 @@
 
         def has_no_render(factory):
             return not has_render(factory)
-        
+
         templates.checkTemplates(module_info, factory, 'view',
                                  has_render, has_no_render)
 
@@ -103,6 +101,3 @@
                 args=(factory, method_name, permission),
                 )
         return True
-
-
-

Modified: grokcore.view/trunk/src/grokcore/view/templatereg.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/templatereg.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/templatereg.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -1,3 +1,18 @@
+##############################################################################
+#
+# Copyright (c) 2006-2010 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Template registry
+"""
 import os
 import warnings
 import zope.component
@@ -7,6 +22,7 @@
 from grokcore.view.interfaces import ITemplateFileFactory, ITemplate
 from grokcore.view.components import PageTemplate
 
+
 class TemplateRegistry(object):
 
     def __init__(self):

Modified: grokcore.view/trunk/src/grokcore/view/testing.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/testing.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/testing.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -18,6 +18,7 @@
 from zope.configuration.config import ConfigurationMachine
 from grokcore.component import zcml
 
+
 def grok(module_name):
     config = ConfigurationMachine()
     zcml.do_grok('grokcore.component.meta', config)
@@ -27,7 +28,10 @@
     zcml.do_grok(module_name, config)
     config.execute_actions()
 
+
 lastwarning = '' # Here we collect warnings.
+
+
 def warn(message, category=None, stacklevel=1):
     """Intended to replace warnings.warn in tests.
 
@@ -50,7 +54,7 @@
     for i in range(lineno):
         line = file.readline()
 
-    warning ="%s:%s: %s: %s\n  %s" % (
+    warning = "%s:%s: %s: %s\n  %s" % (
         path,
         frame.f_lineno,
         category.__name__,

Modified: grokcore.view/trunk/src/grokcore/view/util.py
===================================================================
--- grokcore.view/trunk/src/grokcore/view/util.py	2010-03-08 17:04:29 UTC (rev 109843)
+++ grokcore.view/trunk/src/grokcore/view/util.py	2010-03-08 19:33:58 UTC (rev 109844)
@@ -18,23 +18,24 @@
 from zope.traversing.browser.interfaces import IAbsoluteURL
 from zope.traversing.browser.absoluteurl import _safe as SAFE_URL_CHARACTERS
 
+
 def url(request, obj, name=None, data=None):
     url = getMultiAdapter((obj, request), IAbsoluteURL)()
     if name is not None:
         url += '/' + urllib.quote(name.encode('utf-8'), SAFE_URL_CHARACTERS)
-        
+
     if data is None:
         return url
-    
+
     if not isinstance(data, dict):
         raise TypeError('url() data argument must be a dict.')
-        
-    for k,v in data.items():
+
+    for k, v in data.items():
         if isinstance(v, unicode):
             data[k] = v.encode('utf-8')
         if isinstance(v, (list, set, tuple)):
             data[k] = [
                 isinstance(item, unicode) and item.encode('utf-8')
                 or item for item in v]
-            
+
     return url + '?' + urllib.urlencode(data, doseq=True)



More information about the checkins mailing list