Log message for revision 38072: carried forward from Zope-2_8-branch Changed: U Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/DateIndex.py U Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/tests/test_DateIndex.py
-=- Modified: Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/DateIndex.py =================================================================== --- Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/DateIndex.py 2005-08-24 17:32:25 UTC (rev 38071) +++ Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/DateIndex.py 2005-08-24 17:40:22 UTC (rev 38072) @@ -26,6 +26,8 @@ from DateTime.DateTime import DateTime from Globals import DTMLFile from OFS.PropertyManager import PropertyManager +from ZODB.POSException import ConflictError +from zLOG import LOG, ERROR from zope.interface import implements from Products.PluginIndexes.common import safe_callable @@ -135,6 +137,16 @@ if ConvertedDate != oldConvertedDate: if oldConvertedDate is not _marker: self.removeForwardIndexEntry(oldConvertedDate, documentId) + if ConvertedDate is _marker: + try: + del self._unindex[documentId] + except ConflictError: + raise + except: + LOG('UnIndex', ERROR, + ("Should not happen: ConvertedDate was there," + " now it's not, for document with id %s" % + documentId)) if ConvertedDate is not _marker: self.insertForwardIndexEntry( ConvertedDate, documentId ) Modified: Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/tests/test_DateIndex.py =================================================================== --- Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/tests/test_DateIndex.py 2005-08-24 17:32:25 UTC (rev 38071) +++ Zope/trunk/lib/python/Products/PluginIndexes/DateIndex/tests/test_DateIndex.py 2005-08-24 17:40:22 UTC (rev 38072) @@ -239,7 +239,21 @@ val = (((yr * 12 + mo) * 31 + dy) * 24 + hr) * 60 + mn self.failUnlessEqual(self._index.getEntryForObject(k), val) + def test_removal(self): + """ DateIndex would hand back spurious entries when used as a + sort_index, because it previously was not removing entries + from the _unindex when indexing an object with a value of + None. The catalog consults a sort_index's + documentToKeyMap() to build the brains. + """ + values = self._values + index = self._index + self._populateIndex() + self._checkApply(self._int_req, [values[7]]) + index.index_object(7, None) + self.failIf(7 in index.documentToKeyMap().keys()) + def test_suite(): suite = unittest.TestSuite() suite.addTest( unittest.makeSuite( DI_Tests ) ) _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins