[Zope-Checkins] SVN: Zope/branches/Zope-2_8-branch/lib/python/Products/ backported some small interface improvements and related cleanup from the trunk

Yvo Schubbe y.2005- at wcm-solutions.de
Tue Oct 4 10:43:26 EDT 2005


Log message for revision 38741:
  backported some small interface improvements and related cleanup from the trunk

Changed:
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/MailHost.py
  A   Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/interfaces.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/tests/testMailHost.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/common/PluggableIndex.py
  U   Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/interfaces.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/IZCatalog.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ProgressHandler.py
  UU  Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalogIndexes.py
  U   Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/interfaces.py

-=-
Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/MailHost.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/MailHost.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/MailHost.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -7,28 +7,38 @@
 # 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
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
 """SMTP mail objects
-$Id$"""
-__version__ = "$Revision: 1.83 $"[11:-2]
 
-from Globals import Persistent, DTMLFile, InitializeClass
+$Id$
+"""
+
+import mimetools
+import rfc822
+from cStringIO import StringIO
 from smtplib import SMTP
+
+import Acquisition
+import OFS.SimpleItem
+from AccessControl import ClassSecurityInfo
+from AccessControl.Permissions import change_configuration
+from AccessControl.Permissions import use_mailhost_services
+from AccessControl.Permissions import view_management_screens
 from AccessControl.Role import RoleManager
-from operator import truth
-import Acquisition, sys, types, mimetools
-import OFS.SimpleItem, re, quopri, rfc822
-from cStringIO import StringIO
-from AccessControl import ClassSecurityInfo
-from AccessControl.Permissions import view_management_screens, \
-                                      use_mailhost_services
+from Globals import Persistent, DTMLFile, InitializeClass
 from DateTime import DateTime
+from zope.interface import implements
 
-class MailHostError( Exception ):
+from interfaces import IMailHost
+
+
+class MailHostError(Exception):
+
     pass
 
+
 manage_addMailHostForm=DTMLFile('dtml/addMailHost_form', globals())
 def manage_addMailHost( self, id, title='', smtp_host='localhost'
                       , localhost='localhost', smtp_port=25
@@ -42,8 +52,13 @@
 
 add = manage_addMailHost
 
+
 class MailBase(Acquisition.Implicit, OFS.SimpleItem.Item, RoleManager):
+
     'a mailhost...?'
+
+    implements(IMailHost)
+
     meta_type='Mail Host'
     manage=manage_main=DTMLFile('dtml/manageMailHost', globals())
     manage_main._setName('manage_main')
@@ -81,8 +96,7 @@
         self.smtp_host=smtp_host
         self.smtp_port=smtp_port
 
-
-    security.declareProtected( 'Change configuration', 'manage_makeChanges' )
+    security.declareProtected(change_configuration, 'manage_makeChanges')
     def manage_makeChanges(self,title,smtp_host,smtp_port,smtp_uid='',smtp_pwd='', REQUEST=None):
         'make the changes'
 
@@ -102,8 +116,7 @@
                                    , manage_tabs_message=msg
                                    )
 
-
-    security.declareProtected( use_mailhost_services, 'sendTemplate' )
+    security.declareProtected(use_mailhost_services, 'sendTemplate')
     def sendTemplate(trueself, self, messageTemplate,
                      statusTemplate=None, mto=None, mfrom=None,
                      encode=None, REQUEST=None):
@@ -122,8 +135,7 @@
         except:
             return "SEND OK"
 
-
-    security.declareProtected( use_mailhost_services, 'send' )
+    security.declareProtected(use_mailhost_services, 'send')
     def send(self, messageText, mto=None, mfrom=None, subject=None,
              encode=None):
 
@@ -131,21 +143,19 @@
         messageText = _encode(messageText, encode)
         self._send(mfrom, mto, messageText)
 
-
     # This is here for backwards compatibility only. Possibly it could
     # be used to send messages at a scheduled future time, or via a mail queue?
-    security.declareProtected( use_mailhost_services, 'scheduledSend' )
+    security.declareProtected(use_mailhost_services, 'scheduledSend')
     scheduledSend = send
 
-    security.declareProtected( use_mailhost_services, 'simple_send' )
+    security.declareProtected(use_mailhost_services, 'simple_send')
     def simple_send(self, mto, mfrom, subject, body):
         body="From: %s\nTo: %s\nSubject: %s\n\n%s" % (
             mfrom, mto, subject, body)
 
         self._send( mfrom, mto, body )
 
-
-    security.declarePrivate( '_send' )
+    security.declarePrivate('_send')
     def _send( self, mfrom, mto, messageText ):
         """ Send the message """
         smtpserver = SMTP(self.smtp_host, int(self.smtp_port) )
@@ -154,12 +164,14 @@
         smtpserver.sendmail( mfrom, mto, messageText )
         smtpserver.quit()
 
+InitializeClass(MailBase)
 
-InitializeClass( MailBase )
 
 class MailHost(Persistent, MailBase):
+
     "persistent version"
 
+
 def _encode(body, encode=None):
     if encode is None:
         return body
@@ -191,7 +203,7 @@
         mo['Subject'] = '[No Subject]'
 
     if mto:
-        if isinstance(mto, types.StringType):
+        if isinstance(mto, basestring):
             mto = [rfc822.dump_address_pair(addr) for addr in rfc822.AddressList(mto) ]
         if not mo.getheader('To'):
             mo['To'] = ','.join(mto)


Property changes on: Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/MailHost.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.83

Copied: Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/interfaces.py (from rev 38739, Zope/trunk/lib/python/Products/MailHost/interfaces.py)

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/tests/testMailHost.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/tests/testMailHost.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/tests/testMailHost.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -1,11 +1,38 @@
-import os, sys, unittest
+##############################################################################
+#
+# Copyright (c) 2002 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.
+#
+##############################################################################
+"""MailHost unit tests.
 
-import string, cStringIO, re
-import ZODB, Acquisition
+$Id$
+"""
+
+import unittest
+
 from Products.MailHost.MailHost import MailHostError, _mungeHeaders
 
-class TestMailHost( unittest.TestCase ):
 
+class TestMailHost(unittest.TestCase):
+
+    def _getTargetClass(self):
+        from Products.MailHost.MailHost import MailHost
+
+        return MailHost
+
+    def test_z3interfaces(self):
+        from Products.MailHost.interfaces import IMailHost
+        from zope.interface.verify import verifyClass
+
+        verifyClass(IMailHost, self._getTargetClass())
+
     def testAllHeaders( self ):
         msg = """To: recipient at domain.com
 From: sender at domain.com
@@ -18,12 +45,14 @@
         self.failUnless(resfrom == 'sender at domain.com' )
 
         # Add duplicated info
-        resmsg, resto, resfrom = _mungeHeaders( msg, 'recipient at domain.com', 'sender at domain.com', 'This is the subject' )
+        resmsg, resto, resfrom = _mungeHeaders(msg, 'recipient at domain.com',
+                                  'sender at domain.com', 'This is the subject' )
         self.failUnless(resto == ['recipient at domain.com'])
         self.failUnless(resfrom == 'sender at domain.com' )
 
         # Add extra info
-        resmsg, resto, resfrom = _mungeHeaders( msg, 'recipient2 at domain.com', 'sender2 at domain.com', 'This is the real subject' )
+        resmsg, resto, resfrom = _mungeHeaders(msg, 'recipient2 at domain.com',
+                            'sender2 at domain.com', 'This is the real subject' )
         self.failUnless(resto == ['recipient2 at domain.com'])
         self.failUnless(resfrom == 'sender2 at domain.com' )
 
@@ -32,18 +61,23 @@
 
 This is the message body."""
         # Doesn't specify to
-        self.failUnlessRaises( MailHostError, _mungeHeaders, msg, mfrom='sender at domain.com' )
+        self.failUnlessRaises(MailHostError, _mungeHeaders, msg,
+                              mfrom='sender at domain.com')
         # Doesn't specify from
-        self.failUnlessRaises( MailHostError, _mungeHeaders, msg, mto='recipient at domain.com' )
+        self.failUnlessRaises(MailHostError, _mungeHeaders, msg,
+                              mto='recipient at domain.com')
 
     def testNoHeaders( self ):
         msg = """This is the message body."""
         # Doesn't specify to
-        self.failUnlessRaises( MailHostError, _mungeHeaders, msg, mfrom='sender at domain.com' )
+        self.failUnlessRaises(MailHostError, _mungeHeaders, msg,
+                              mfrom='sender at domain.com')
         # Doesn't specify from
-        self.failUnlessRaises( MailHostError, _mungeHeaders, msg, mto='recipient at domain.com' )
+        self.failUnlessRaises(MailHostError, _mungeHeaders, msg,
+                              mto='recipient at domain.com')
         # Specify all
-        resmsg, resto, resfrom = _mungeHeaders( msg, 'recipient2 at domain.com', 'sender2 at domain.com', 'This is the real subject' )
+        resmsg, resto, resfrom = _mungeHeaders(msg, 'recipient2 at domain.com',
+                             'sender2 at domain.com', 'This is the real subject')
         self.failUnless(resto == ['recipient2 at domain.com'])
         self.failUnless(resfrom == 'sender2 at domain.com' )
 
@@ -66,23 +100,24 @@
         # Test Address-Parser for To & CC given in messageText
         
         resmsg, resto, resfrom = _mungeHeaders( msg )
-        self.failUnless(resto == ['"Name, Nick" <recipient at domain.com>','"Foo Bar" <foo at domain.com>','"Web, Jack" <jack at web.com>'])
+        self.failUnless(resto == ['"Name, Nick" <recipient at domain.com>',
+                                  '"Foo Bar" <foo at domain.com>',
+                                  '"Web, Jack" <jack at web.com>'])
         self.failUnless(resfrom == 'sender at domain.com' )
 
         # Test Address-Parser for a given mto-string
         
-        resmsg, resto, resfrom = _mungeHeaders( msg, mto= '"Public, Joe" <pjoe at domain.com>, "Foo Bar" <foo at domain.com>')
+        resmsg, resto, resfrom = _mungeHeaders(msg, mto= '"Public, Joe" <pjoe at domain.com>, "Foo Bar" <foo at domain.com>')
 
-        self.failUnless(resto == ['"Public, Joe" <pjoe at domain.com>','"Foo Bar" <foo at domain.com>'])
+        self.failUnless(resto == ['"Public, Joe" <pjoe at domain.com>',
+                                  '"Foo Bar" <foo at domain.com>'])
         self.failUnless(resfrom == 'sender at domain.com' )
 
+
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest( unittest.makeSuite( TestMailHost ) )
     return suite
 
-def main():
-    unittest.TextTestRunner().run(test_suite())
-
 if __name__ == '__main__':
-    main()
+    unittest.main(defaultTest='test_suite')


Property changes on: Zope/branches/Zope-2_8-branch/lib/python/Products/MailHost/tests/testMailHost.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.5
Name: svn:keywords
   + Id

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/common/PluggableIndex.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/common/PluggableIndex.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/common/PluggableIndex.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -7,94 +7,28 @@
 # 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
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
+"""Pluggable Index interfaces.
 
-"""Pluggable Index Interface"""
-__version__='$Revision: 1.9 $'[11:-2]
+$Id$
+"""
 
-import Interface
 
-class PluggableIndexInterface(Interface.Base):
+# create PluggableIndexInterface, UniqueValueIndex, SortIndex
+from Interface.bridge import createZope3Bridge
+from Products.PluginIndexes.interfaces import IPluggableIndex
+from Products.PluginIndexes.interfaces import ISortIndex
+from Products.PluginIndexes.interfaces import IUniqueValueIndex
+import PluggableIndex
 
-    def getId():
-        """Return Id of index."""
+createZope3Bridge(IPluggableIndex, PluggableIndex, 'PluggableIndexInterface')
+createZope3Bridge(ISortIndex, PluggableIndex, 'SortIndex')
+createZope3Bridge(IUniqueValueIndex, PluggableIndex, 'UniqueValueIndex')
 
-    def getEntryForObject(documentId, default=None):
-        """Get all information contained for 'documentId'."""
-
-    def getIndexSourceNames():
-        """ return a sequence of attribute names that are indexed 
-            by the index. 
-        """
-
-    def index_object(documentId, obj, threshold=None):
-        """Index an object.
-
-        'documentId' is the integer ID of the document.
-        'obj' is the object to be indexed.
-        'threshold' is the number of words to process between committing
-        subtransactions.  If None, subtransactions are disabled.
-        """
-
-    def unindex_object(documentId):
-        """Remove the documentId from the index."""
-
-    def _apply_index(request, cid=''):
-        """Apply the index to query parameters given in 'request'.
-
-        The argument should be a mapping object.
-
-        If the request does not contain the needed parametrs, then
-        None is returned.
-
-        If the request contains a parameter with the name of the column
-        + "_usage", it is sniffed for information on how to handle applying
-        the index. (Note: this style or parameters is deprecated)
-
-        If the request contains a parameter with the name of the
-        column and this parameter is either a Record or a class
-        instance then it is assumed that the parameters of this index
-        are passed as attribute (Note: this is the recommended way to
-        pass parameters since Zope 2.4)
-
-        Otherwise two objects are returned.  The first object is a
-        ResultSet containing the record numbers of the matching
-        records.  The second object is a tuple containing the names of
-        all data fields used.
-        """
-    
-    def numObjects():
-        """Return the number of indexed objects"""
-
-    def indexSize():
-        """Return the size of the index in terms of distinct values"""
-    
-    def clear():
-        """Empty the index"""
-        
-class UniqueValueIndex(PluggableIndexInterface):
-    """An index which can return lists of unique values contained in it"""
-    
-    def hasUniqueValuesFor(name):
-        """Return true if the index can return the unique values for name"""
-        
-    def uniqueValues(name=None, withLengths=0):
-        """Return the unique values for name.
-
-        If 'withLengths' is true, returns a sequence of tuples of
-        (value, length)."""
-
-class SortIndex(PluggableIndexInterface):
-    """An index which may be used to sort a set of document ids"""
-    
-    def keyForDocument(documentId):
-        """Return the sort key that cooresponds to the specified document id
-        
-        This method is no longer used by ZCatalog, but is left for backwards 
-        compatibility."""
-        
-    def documentToKeyMap():
-        """Return an object that supports __getitem__ and may be used to quickly
-        lookup the sort key given a document id"""
+del createZope3Bridge
+del IPluggableIndex
+del ISortIndex
+del IUniqueValueIndex
+del PluggableIndex


Property changes on: Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/common/PluggableIndex.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.9
Name: svn:keywords
   + Id

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/interfaces.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/interfaces.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/PluginIndexes/interfaces.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -19,8 +19,6 @@
 from zope.schema import Bool
 
 
-# XXX: copied from common.PluggableIndex.PluggableIndexInterface;
-#      should be bridged
 class IPluggableIndex(Interface):
 
     def getId():
@@ -30,8 +28,7 @@
         """Get all information contained for 'documentId'."""
 
     def getIndexSourceNames():
-        """ return a sequence of attribute names that are indexed 
-            by the index. 
+        """Get a sequence of attribute names that are indexed by the index.
         """
 
     def index_object(documentId, obj, threshold=None):
@@ -69,26 +66,24 @@
         records.  The second object is a tuple containing the names of
         all data fields used.
         """
-    
+
     def numObjects():
         """Return the number of indexed objects"""
 
-# XXX: this is currently broken
+# XXX: not implemented by TextIndex and TopicIndex
 #    def indexSize():
 #        """Return the size of the index in terms of distinct values"""
-    
+
     def clear():
         """Empty the index"""
 
 
-# XXX: copied from from common.PluggableIndex.UniqueValueIndex;
-#      should be bridged
 class IUniqueValueIndex(IPluggableIndex):
     """An index which can return lists of unique values contained in it"""
-    
+
     def hasUniqueValuesFor(name):
         """Return true if the index can return the unique values for name"""
-        
+
     def uniqueValues(name=None, withLengths=0):
         """Return the unique values for name.
 
@@ -96,17 +91,15 @@
         (value, length)."""
 
 
-# XXX: copied from from common.PluggableIndex.SortIndex;
-#      should be bridged
 class ISortIndex(IPluggableIndex):
     """An index which may be used to sort a set of document ids"""
-    
+
     def keyForDocument(documentId):
         """Return the sort key that cooresponds to the specified document id
-        
-        This method is no longer used by ZCatalog, but is left for backwards 
+
+        This method is no longer used by ZCatalog, but is left for backwards
         compatibility."""
-        
+
     def documentToKeyMap():
         """Return an object that supports __getitem__ and may be used to quickly
         lookup the sort key given a document id"""

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/IZCatalog.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/IZCatalog.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/IZCatalog.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -1,7 +1,6 @@
 ##############################################################################
 #
-# Copyright (c) 2002 Zope Corporation and Contributors.
-# All Rights Reserved.
+# Copyright (c) 2002 Zope Corporation and Contributors. All Rights Reserved.
 #
 # This software is subject to the provisions of the Zope Public License,
 # Version 2.0 (ZPL).  A copy of the ZPL should accompany this distribution.
@@ -15,238 +14,13 @@
 $Id$
 """
 
-from Interface import Interface
 
-class IZCatalog(Interface):
-    """ZCatalog object
+# create IZCatalog
+from Interface.bridge import createZope3Bridge
+from interfaces import IZCatalog as z3IZCatalog
+import IZCatalog
 
-    A ZCatalog contains arbitrary index like references to Zope
-    objects.  ZCatalog's can index object attribute using a variety
-    of "plug-in" index types.
+createZope3Bridge(z3IZCatalog, IZCatalog, 'IZCatalog')
 
-    Several index types are included, and others may be added.
-
-      Text -- Text indexes index textual content.  The index can be
-      used to search for objects containing certain words.
-
-      Field -- Field indexes index atomic values.  The index can be
-      used to search for objects that have certain properties.
-
-      Keyword -- Keyword indexes index sequences of values.  The index
-      can be used to search for objects that match one or more of the
-      search terms.
-
-      Path -- Path indexes index URI paths. They allow you to find objects
-      based on their placement in a hierarchy.
-
-      Date -- Date indexes index date and type data. They are a type of field
-      index specifically optimized for indexing dates.
-
-      Date Range -- Date range indexes index time intervals. They are designed
-      for efficient searching of dates falling between two boundaries
-      (such as effective / expiration dates).
-
-      Topic -- Topic indexes store prefiltered sets of documents. They are used
-      to optimize complex queries into a single fast query by prefiltering
-      documents by an expression
-
-    The ZCatalog can maintain a table of extra data about cataloged
-    objects.  This information can be used on search result pages to
-    show information about a search result.
-
-    The meta-data table schema is used to build the schema for
-    ZCatalog Result objects.  The objects have the same attributes
-    as the column of the meta-data table.
-
-    ZCatalog does not store references to the objects themselves, but
-    rather to a unique identifier that defines how to get to the
-    object.  In Zope, this unique identifier is the object's relative
-    path to the ZCatalog (since two Zope objects cannot have the same
-    URL, this is an excellent unique qualifier in Zope).
-
-    """
-
-    def catalog_object(obj, uid, idxs=None, update_metadata=1):
-        """Catalogs the object 'obj' with the unique identifier 'uid'.
-
-        The uid must be a physical path, either absolute or relative to
-        the catalog.
-
-        If provided, idxs specifies the names of indexes to update.
-
-        If update_metadata is specified (the default), the object's metadata
-        is updated.  If it is not, the metadata is left untouched.  This
-        flag has no effect if the object is not yet cataloged (metadata
-        is always added for new objects).
-        """
-
-    def uncatalog_object(uid):
-        """Uncatalogs the object with the unique identifier 'uid'.
-
-        The uid must be a physical path, either absolute or relative to
-        the catalog.
-        """
-
-    def uniqueValuesFor(name):
-        """returns the unique values for a given FieldIndex named 'name'.
-        """
-
-    def getpath(rid):
-        """Return the path to a cataloged object given a 'data_record_id_'
-        """
-
-    def getrid(rid):
-        """Return the 'data_record_id_' to a cataloged object given a path
-        """
-
-    def getobject(rid, REQUEST=None):
-        """Return a cataloged object given a 'data_record_id_'
-        """
-
-    def schema():
-        """Get the meta-data schema
-
-        Returns a sequence of names that correspond to columns in the
-        meta-data table.
-
-        """
-
-    def indexes():
-        """Returns a sequence of names that correspond to indexes.
-        """
-
-    def index_objects():
-        """Returns a sequence of actual index objects.
-
-        NOTE: This returns unwrapped indexes! You should probably use
-        getIndexObjects instead. Some indexes expect to be wrapped.
-        """
-
-    def getIndexObjects():
-        """Returns a list of acquisition wrapped index objects
-        """
-
-    def searchResults(REQUEST=None, **kw):
-        """Search the catalog.
-
-        Search terms can be passed in the REQUEST or as keyword
-        arguments.
-
-        Search queries consist of a mapping of index names to search
-        parameters.  You can either pass a mapping to searchResults as
-        the variable 'REQUEST' or you can use index names and search
-        parameters as keyword arguments to the method, in other words::
-
-          searchResults(title='Elvis Exposed',
-                        author='The Great Elvonso')
-
-        is the same as::
-
-          searchResults({'title' : 'Elvis Exposed',
-                         'author : 'The Great Elvonso'})
-
-        In these examples, 'title' and 'author' are indexes.  This
-        query will return any objects that have the title *Elvis
-        Exposed* AND also are authored by *The Great Elvonso*.  Terms
-        that are passed as keys and values in a searchResults() call
-        are implicitly ANDed together. To OR two search results, call
-        searchResults() twice and add concatenate the results like this::
-
-          results = ( searchResults(title='Elvis Exposed') +
-                      searchResults(author='The Great Elvonso') )
-
-        This will return all objects that have the specified title OR
-        the specified author.
-
-        There are some special index names you can pass to change the
-        behavior of the search query:
-
-          sort_on -- This parameters specifies which index to sort the
-          results on.
-
-          sort_order -- You can specify 'reverse' or 'descending'.
-          Default behavior is to sort ascending.
-
-          sort_limit -- An optimization hint to tell the catalog how many
-          results you are really interested in. See the limit argument
-          to the search method for more details.
-
-        There are some rules to consider when querying this method:
-
-            - an empty query mapping (or a bogus REQUEST) returns all
-              items in the catalog.
-
-            - results from a query involving only field/keyword
-              indexes, e.g.  {'id':'foo'} and no 'sort_on' will be
-              returned unsorted.
-
-            - results from a complex query involving a field/keyword
-              index *and* a text index,
-              e.g. {'id':'foo','PrincipiaSearchSource':'bar'} and no
-              'sort_on' will be returned unsorted.
-
-            - results from a simple text index query
-              e.g.{'PrincipiaSearchSource':'foo'} will be returned
-              sorted in descending order by 'score'.  A text index
-              cannot beused as a 'sort_on' parameter, and attempting
-              to do so will raise an error.
-
-        Depending on the type of index you are querying, you may be
-        able to provide more advanced search parameters that can
-        specify range searches or wildcards.  These features are
-        documented in The Zope Book.
-
-        """
-
-    def __call__(REQUEST=None, **kw):
-        """Search the catalog, the same way as 'searchResults'.
-        """
-
-    def search(query_request, sort_index=None, reverse=0, limit=None, merge=1):
-        """Programmatic search interface, use for searching the catalog from
-        scripts.
-
-        query_request -- Dictionary containing catalog query. This uses the
-        same format as searchResults.
-
-        sort_index -- Name of sort index
-
-        reverse -- Boolean, reverse sort order (defaults to false)
-
-        limit -- Limit sorted result count to the n best records. This is an
-        optimization hint used in conjunction with a sort_index. If possible
-        ZCatalog will use a different sort algorithm that uses much less memory
-        and scales better then a full sort. The actual number of records
-        returned is not guaranteed to be <= limit. You still need to apply the
-        same batching to the results. Since the len() of the results will no
-        longer be the actual result count, you can use the
-        "actual_result_count" attribute of the lazy result object instead to
-        determine the size of the full result set.
-
-        merge -- Return merged, lazy results (like searchResults) or raw
-        results for later merging. This can be used to perform multiple
-        queries (even across catalogs) and merge and sort the combined results.
-        """
-
-    def refreshCatalog(clear=0, pghandler=None):
-        """Reindex every object we can find, removing the unreachable
-        ones from the index.
-
-        clear -- values: 1|0  clear the catalog before reindexing
-
-        pghandler -- optional Progresshandler as defined in ProgressHandler.py
-        (see also README.txt)
-        """
-
-    def reindexIndex(name, REQUEST, pghandler=None):
-        """Reindex a single index.
-
-        name -- id of index
-
-        REQUEST -- REQUEST object
-
-        pghandler -- optional Progresshandler as defined in ProgressHandler.py
-        (see also README.txt)
-        """
-
-__doc__ = IZCatalog.__doc__ + __doc__
+del createZope3Bridge
+del z3IZCatalog


Property changes on: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/IZCatalog.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.7

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ProgressHandler.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ProgressHandler.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ProgressHandler.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -7,12 +7,11 @@
 # 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
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
-
 """
-$Id: ZCatalog.py 25050 2004-05-27 15:06:40Z chrisw $
+$Id$
 """
 
 import time, sys
@@ -95,6 +94,7 @@
     def output(self, text):
         LOG(self._ident, INFO, text)
 
+
 class FilelogHandler(StdoutHandler):
     """ Use a custom file for logging """
 
@@ -106,6 +106,3 @@
 
     def output(self, text):
         open(self.filename, 'a').write(text + '\n')
-
-
-


Property changes on: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ProgressHandler.py
___________________________________________________________________
Name: svn:keywords
   - svn:eol-style
   + Id
Name: svn:eol-style
   + native

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalogIndexes.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalogIndexes.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalogIndexes.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -7,33 +7,37 @@
 # 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
+# FOR A PARTICULAR PURPOSE.
 #
 ##############################################################################
+"""Virtual container for ZCatalog indexes.
 
-"""$Id$
+$Id$
 """
 
-
 from Acquisition import Implicit
 from Persistence import Persistent
 from Globals import DTMLFile, InitializeClass
 from AccessControl.SecurityInfo import ClassSecurityInfo
 from AccessControl.Permissions import manage_zcatalog_indexes
 from OFS.Folder import Folder
+from OFS.ObjectManager import IFAwareObjectManager
 from OFS.SimpleItem import SimpleItem
-from OFS.ObjectManager import IFAwareObjectManager
+from Products.PluginIndexes.common.PluggableIndex \
+        import PluggableIndexInterface
+from Products.PluginIndexes.interfaces import IPluggableIndex
 
-from Products.PluginIndexes.common.PluggableIndex import PluggableIndexInterface
 
 _marker = []
 
-class ZCatalogIndexes (IFAwareObjectManager, Folder, Persistent, Implicit):
+
+class ZCatalogIndexes(IFAwareObjectManager, Folder, Persistent, Implicit):
+
     """A mapping object, responding to getattr requests by looking up
     the requested indexes in an object manager."""
 
     # The interfaces we want to show up in our object manager
-    _product_interfaces = (PluggableIndexInterface, )
+    _product_interfaces = (PluggableIndexInterface, IPluggableIndex)
 
     meta_type = "ZCatalogIndex"
     manage_options = ()
@@ -113,6 +117,7 @@
 
 InitializeClass(ZCatalogIndexes)
 
+
 class OldCatalogWrapperObject(SimpleItem, Implicit):
 
     manage_options= (


Property changes on: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/ZCatalogIndexes.py
___________________________________________________________________
Name: cvs2svn:cvs-rev
   - 1.9

Modified: Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/interfaces.py
===================================================================
--- Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/interfaces.py	2005-10-04 14:25:03 UTC (rev 38740)
+++ Zope/branches/Zope-2_8-branch/lib/python/Products/ZCatalog/interfaces.py	2005-10-04 14:43:25 UTC (rev 38741)
@@ -18,8 +18,6 @@
 from zope.interface import Interface
 
 
-# XXX: copied from IZCatalog.IZCatalog;
-#      should be bridged
 class IZCatalog(Interface):
     """ZCatalog object
 
@@ -66,7 +64,6 @@
     object.  In Zope, this unique identifier is the object's relative
     path to the ZCatalog (since two Zope objects cannot have the same
     URL, this is an excellent unique qualifier in Zope).
-
     """
 
     def catalog_object(obj, uid, idxs=None, update_metadata=1):
@@ -111,7 +108,6 @@
 
         Returns a sequence of names that correspond to columns in the
         meta-data table.
-
         """
 
     def indexes():
@@ -198,7 +194,6 @@
         able to provide more advanced search parameters that can
         specify range searches or wildcards.  These features are
         documented in The Zope Book.
-
         """
 
     def __call__(REQUEST=None, **kw):



More information about the Zope-Checkins mailing list