[kupu-checkins] r41583 - in kupu/trunk/kupu/plone: . kupu_plone_layer

duncan at codespeak.net duncan at codespeak.net
Wed Mar 28 17:44:57 CEST 2007


Author: duncan
Date: Wed Mar 28 17:44:54 2007
New Revision: 41583

Modified:
   kupu/trunk/kupu/plone/ReftextField.py
   kupu/trunk/kupu/plone/exportimport.py
   kupu/trunk/kupu/plone/html2captioned.py
   kupu/trunk/kupu/plone/kupu2html.py
   kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py
   kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py
   kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py
   kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html
   kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt
   kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py
   kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py
   kupu/trunk/kupu/plone/librarytool.py
   kupu/trunk/kupu/plone/plonedrawers.py
   kupu/trunk/kupu/plone/plonelibrarytool.py
   kupu/trunk/kupu/plone/util.py
Log:
Avoid calling CMFCore getToolByName unless we really have to.
Make kupu refuse to load when html starts with a comment: that way you can suppress kupu and make sure it stays suppressed.

Modified: kupu/trunk/kupu/plone/ReftextField.py
==============================================================================
--- kupu/trunk/kupu/plone/ReftextField.py	(original)
+++ kupu/trunk/kupu/plone/ReftextField.py	Wed Mar 28 17:44:54 2007
@@ -1,11 +1,11 @@
 from AccessControl import ClassSecurityInfo
-from Products.CMFCore.utils import getToolByName
 from Products.Archetypes.public import *
 from Products.Archetypes.config import REFERENCE_CATALOG
 from Products.Archetypes.Field import TextField
 from Products.Archetypes.ReferenceEngine import Reference
 from Products.Archetypes.exceptions import ReferenceException
 from ZPublisher.HTTPRequest import FileUpload
+from Products.kupu.plone.util import getToolByName
 import re
 
 # UID_PATTERN matches a UID in an anchor or image tag.

Modified: kupu/trunk/kupu/plone/exportimport.py
==============================================================================
--- kupu/trunk/kupu/plone/exportimport.py	(original)
+++ kupu/trunk/kupu/plone/exportimport.py	Wed Mar 28 17:44:54 2007
@@ -20,7 +20,7 @@
 from Globals import package_home
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
 
 from Products.GenericSetup.utils import CONVERTER
 from Products.GenericSetup.utils import DEFAULT

Modified: kupu/trunk/kupu/plone/html2captioned.py
==============================================================================
--- kupu/trunk/kupu/plone/html2captioned.py	(original)
+++ kupu/trunk/kupu/plone/html2captioned.py	Wed Mar 28 17:44:54 2007
@@ -7,10 +7,10 @@
 # The transform finds all the embedded images, and replaces them with
 # an appropriate chunk of HTML to include the caption.
 #
-from Products.CMFCore.utils import getToolByName
 from Products.PortalTransforms.interfaces import itransform
 from DocumentTemplate.DT_Util import html_quote
 from DocumentTemplate.DT_Var import newline_to_br
+from Products.kupu.plone.util import getToolByName
 import re
 from cgi import escape
 from urlparse import urlsplit, urljoin, urlunsplit

Modified: kupu/trunk/kupu/plone/kupu2html.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu2html.py	(original)
+++ kupu/trunk/kupu/plone/kupu2html.py	Wed Mar 28 17:44:54 2007
@@ -7,9 +7,9 @@
 # The transform is the same as the one done by html2captioned, but
 # this version expects to work on text/x-html-raw
 
-from Products.CMFCore.utils import getToolByName
 from Products.PortalTransforms.interfaces import itransform
 from Products.kupu.plone import html2captioned
+from Products.kupu.plone.util import getToolByName
 
 class KupuOutputTransform(html2captioned.HTMLToCaptioned):
     """Transform which adds captions to images embedded in HTML"""

Modified: kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/contentUsesKupu.py	Wed Mar 28 17:44:54 2007
@@ -6,7 +6,7 @@
 ##bind script=script
 ##bind subpath=traverse_subpath
 ##parameters=fieldname
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
 
 from Products.CMFCore.utils import getToolByName
 tool = getToolByName(context, 'kupu_library_tool')
@@ -32,6 +32,7 @@
   return True
 text_format = REQUEST.get('%s_text_format' % fieldname, context.getContentType(fieldname))
 content = field.getEditAccessor(context)()
-
+if content.startswith('<!--'):
+    return False
 return len(content)==0 or 'html' in text_format.lower()
 

Modified: kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/convertContentForKupu.py	Wed Mar 28 17:44:54 2007
@@ -6,7 +6,7 @@
 ##bind script=script
 ##bind subpath=traverse_subpath
 ##parameters=fieldname, content
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
 from Products.PythonScripts.standard import structured_text, newline_to_br
 
 field = context.getField(fieldname)

Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupuUploadImage.py	Wed Mar 28 17:44:54 2007
@@ -6,7 +6,7 @@
 ##bind subpath=traverse_subpath
 ##parameters=node_prop_title, node_prop_desc, node_prop_image
 
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
 from Products.PythonScripts.standard import html_quote, newline_to_br
 request = context.REQUEST
 RESPONSE =  request.RESPONSE

Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupu_wysiwyg_support.html	Wed Mar 28 17:44:54 2007
@@ -394,6 +394,12 @@
                     <option value="" i18n:translate="">Normal</option>
                   </select>
                 </div>
+                <div style="float:right">
+                  <label i18n:translate="" for="kupu-bm-number">
+                    Numbering
+                  </label>
+                  <input type="checkbox" checked="checked" id="kupu-bm-number"/>
+                </div>
                 <label for="kupu-bm-checkall">
                   <em i18n:translate="">toggle all</em>
                 </label>

Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupulibraries.xml.pt	Wed Mar 28 17:44:54 2007
@@ -10,7 +10,7 @@
     >
 
 <tal:with define="
-    getToolByName nocall:modules/Products/CMFCore/utils/getToolByName;
+    getToolByName nocall:modules/Products/kupu/util/getToolByName;
     kupu_tool     python:getToolByName(context, 'kupu_library_tool');
     libraries     python:kupu_tool.getCookedLibraries(context);
     ">

Modified: kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/resolveuid.py	Wed Mar 28 17:44:54 2007
@@ -7,7 +7,7 @@
 ##bind subpath=traverse_subpath
 ##parameters=
 # (reference_url is supposed to do the same thing, but is broken)
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
 from Products.PythonScripts.standard import html_quote
 
 request = context.REQUEST

Modified: kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/sample-kupu-customisation-policy.py	Wed Mar 28 17:44:54 2007
@@ -11,7 +11,7 @@
 # Make a copy of this script called 'kupu-customisation-policy'
 # in any skin folder on your site and edit it to set up your own
 # preferred kupu configuration.
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
 
 RESOURCES = dict(
     linkable = ('Document', 'Image', 'File', 'News Item', 'Event', 'Folder', 'Large Plone Folder'),

Modified: kupu/trunk/kupu/plone/librarytool.py
==============================================================================
--- kupu/trunk/kupu/plone/librarytool.py	(original)
+++ kupu/trunk/kupu/plone/librarytool.py	Wed Mar 28 17:44:54 2007
@@ -18,7 +18,7 @@
 from Products.CMFCore.Expression import Expression, createExprContext
 from Products.PageTemplates.Expressions import getEngine, SecureModuleImporter
 from Products.kupu.plone.interfaces import IKupuLibraryTool
-from Products.CMFCore.utils import getToolByName
+from Products.kupu.plone.util import getToolByName
 
 class KupuError(Exception): pass
 NEWTYPE_IGNORE, NEWTYPE_ADD = 0, 1

Modified: kupu/trunk/kupu/plone/plonedrawers.py
==============================================================================
--- kupu/trunk/kupu/plone/plonedrawers.py	(original)
+++ kupu/trunk/kupu/plone/plonedrawers.py	Wed Mar 28 17:44:54 2007
@@ -16,13 +16,13 @@
 """
 import re, string
 from thread import get_ident
-from Products.CMFCore.utils import getToolByName
 from AccessControl import Unauthorized, ClassSecurityInfo, getSecurityManager
 from Globals import InitializeClass
 from Products.Archetypes.public import *
 from Products.Archetypes.interfaces.referenceable import IReferenceable
 from Products.PythonScripts.standard import html_quote, newline_to_br
 from Products.kupu.plone.librarytool import KupuError
+from Products.kupu.plone.util import getToolByName
 import html2captioned
 
 try:

Modified: kupu/trunk/kupu/plone/plonelibrarytool.py
==============================================================================
--- kupu/trunk/kupu/plone/plonelibrarytool.py	(original)
+++ kupu/trunk/kupu/plone/plonelibrarytool.py	Wed Mar 28 17:44:54 2007
@@ -24,11 +24,12 @@
 from Globals import InitializeClass
 
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile
-from Products.CMFCore.utils import UniqueObject, getToolByName
+from Products.CMFCore.utils import UniqueObject
 from Products.PythonScripts.standard import Object
 
 from Products.kupu.plone.librarytool import KupuLibraryTool
 from Products.kupu.plone import permissions, scanner, plonedrawers, util, helpers
+from Products.kupu.plone.util import getToolByName
 from Products.kupu import kupu_globals
 from Products.kupu.config import TOOLNAME, TOOLTITLE
 from StringIO import StringIO

Modified: kupu/trunk/kupu/plone/util.py
==============================================================================
--- kupu/trunk/kupu/plone/util.py	(original)
+++ kupu/trunk/kupu/plone/util.py	Wed Mar 28 17:44:54 2007
@@ -1,13 +1,66 @@
 # Utility functions used by Kupu tool
 import os
 from App.Common import package_home
-from Products.CMFCore.utils import getToolByName, minimalpath
+from Products.CMFCore.utils import minimalpath
 from Products.CMFCore.DirectoryView import createDirectoryView
 from Products.MimetypesRegistry import MimeTypeItem
 from Products.kupu import kupu_globals
 
+from AccessControl import ModuleSecurityInfo
+security = ModuleSecurityInfo('Products.kupu.plone.util')
+
 kupu_package_dir = package_home(kupu_globals)
 
+# trying to get rid of some deprecation warnings in a
+# backwards compatible way
+try:
+    from zope.component import getUtility
+    from zope.component.interfaces import ComponentLookupError
+    HAVE_GET_UTILITY = True
+except ImportError:
+    HAVE_GET_UTILITY = False
+from Products.CMFCore.utils import getToolByName as gtbn
+
+if HAVE_GET_UTILITY:
+    INTERFACEMAP = {
+        'portal_catalog': ('Products.CMFCore.interfaces', 'ICatalogTool'),
+        'portal_memberdata': ('Products.CMFCore.interfaces', 'IMemberDataTool'),
+        'portal_membership': ('Products.CMFCore.interfaces', 'IMembershipTool'),
+        'portal_types': ('Products.CMFCore.interfaces', 'ITypesTool'),
+        'portal_url': ('Products.CMFCore.interfaces', 'IURLTool'),
+        'portal_workflow': ('Products.CMFCore.interfaces', 'IWorkflowTool'),
+        'plone_utils': ('Products.CMFPlone.interfaces', 'IPloneTool'),
+        'portal_interface': ('Products.CMFPlone.interfaces', 'IInterfaceTool'),
+        'portal_skins': ('Products.CMFPlone.interfaces', 'ISkinsContainer'),
+        'content_type_registry': ('Products.CMFPlone.interfaces', 'IContentTypeRegistry'),
+        'portal_quickinstaller': ('Products.CMFQuickInstallerTool.interfaces', 'IQuickInstallerTool'),
+        'archetype_tool': ('Products.Archetypes.interfaces', 'IArchetypeTool'),
+        'reference_catalog': ('Products.Archetypes.interfaces', 'IReferenceCatalog'),
+        'uid_catalog': ('Products.Archetypes.interfaces', 'IUIDCatalog'),
+        'mimetypes_registry': ('Products.MimetypesRegistry.interfaces', 'IMimetypesRegistryTool'),
+        'portal_transforms': ('Products.PortalTransforms.interfaces', 'IPortalTransformsTool'),
+        'kupu_library_tool': ('Products.kupu.plone.z3interfaces', 'IPloneKupuLibraryTool'),
+        }
+    iname_mapping = {}
+    for id, (module, interface) in INTERFACEMAP.iteritems():
+        mod = __import__(module, globals(), locals(), [interface])
+        if hasattr(mod, interface):
+            iname_mapping[id] = getattr(mod, interface)
+    print iname_mapping
+
+security.declarePublic('getToolByName')
+def getToolByName(context, tool_name, default=None):
+    if HAVE_GET_UTILITY:
+        interface = iname_mapping.get(tool_name, None)
+        if interface is not None:
+            try:
+                return getUtility(interface)
+            except ComponentLookupError:
+                # Behave in backward compatible way
+                # fall through to old implementation
+                pass
+    return gtbn(context, tool_name, default)
+
 def register_layer(self, relpath, name, out, add=True):
     """Register a file system directory as skin layer
     """


More information about the kupu-checkins mailing list