Log message for revision 73762: Mark ZCatalog catalog brains with an interface
Changed: U Zope/trunk/doc/CHANGES.txt U Zope/trunk/lib/python/Products/ZCatalog/CatalogBrains.py U Zope/trunk/lib/python/Products/ZCatalog/interfaces.py -=- Modified: Zope/trunk/doc/CHANGES.txt =================================================================== --- Zope/trunk/doc/CHANGES.txt 2007-03-27 14:34:19 UTC (rev 73761) +++ Zope/trunk/doc/CHANGES.txt 2007-03-27 14:36:38 UTC (rev 73762) @@ -51,6 +51,9 @@ Features added + - ZCatalog result objects (catalog brains) now have an interface, + ZCatalog.interfaces.ICatalogBrain. + - A new module, AccessControl.requestmethod, provides a decorator factory that limits decorated methods to one request method only. For example, marking a method with @requestmethod('POST') limits Modified: Zope/trunk/lib/python/Products/ZCatalog/CatalogBrains.py =================================================================== --- Zope/trunk/lib/python/Products/ZCatalog/CatalogBrains.py 2007-03-27 14:34:19 UTC (rev 73761) +++ Zope/trunk/lib/python/Products/ZCatalog/CatalogBrains.py 2007-03-27 14:36:38 UTC (rev 73762) @@ -13,9 +13,13 @@ __version__ = "$Revision$"[11:-2] +from zope.interface import implements + import Acquisition, Record from ZODB.POSException import ConflictError +from interfaces import ICatalogBrain + # Switch for new behavior, raise exception instead of returning None. # Use 'catalog-getObject-raises off' in zope.conf to restore old behavior. GETOBJECT_RAISES = True @@ -25,6 +29,8 @@ required, and provides just enough smarts to let us get the URL, path, and cataloged object without having to ask the catalog directly. """ + implements(ICatalogBrain) + def has_key(self, key): return self.__record_schema__.has_key(key) Modified: Zope/trunk/lib/python/Products/ZCatalog/interfaces.py =================================================================== --- Zope/trunk/lib/python/Products/ZCatalog/interfaces.py 2007-03-27 14:34:19 UTC (rev 73761) +++ Zope/trunk/lib/python/Products/ZCatalog/interfaces.py 2007-03-27 14:36:38 UTC (rev 73762) @@ -246,3 +246,37 @@ pghandler -- optional Progresshandler as defined in ProgressHandler.py (see also README.txt) """ + +# XXX This should inherit from an IRecord interface, if there ever is one. +class ICatalogBrain(Interface): + """Catalog brain that handles looking up attributes as + required, and provides just enough smarts to let us get the URL, path, + and cataloged object without having to ask the catalog directly. + """ + def has_key(key): + """Record has this field""" + + def getPath(): + """Get the physical path for this record""" + + def getURL(relative=0): + """Generate a URL for this record""" + + def _unrestrictedGetObject(): + """Return the object for this record + + Same as getObject, but does not do security checks. + """ + + def getObject(): + """Return the object for this record + + Will return None if the object cannot be found via its cataloged path + (i.e., it was deleted or moved without recataloging), or if the user is + not authorized to access the object. + + """ + + def getRID(): + """Return the record ID for this object.""" + _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins