I'm getting an error in Catalog when I specify sort_on on a field-index, and also search on a text index. Zope 2.2.1, Python 1.5.2 Error Type: TypeError Error Value: loop over non-sequence Traceback (innermost last): File lib/python/ZPublisher/Publish.py, line 222, in publish_module File lib/python/ZPublisher/Publish.py, line 187, in publish File lib/python/Zope/__init__.py, line 221, in zpublisher_exception_hook (Object: ProviderContainer) File lib/python/ZPublisher/Publish.py, line 171, in publish File lib/python/ZPublisher/mapply.py, line 160, in mapply (Object: search) File lib/python/ZPublisher/Publish.py, line 112, in call_object (Object: search) File lib/python/OFS/DTMLDocument.py, line 177, in __call__ (Object: search) File lib/python/DocumentTemplate/DT_String.py, line 528, in __call__ (Object: search) File lib/python/DocumentTemplate/DT_In.py, line 630, in renderwob (Object: SiteIndex) File lib/python/Products/ZCatalog/ZCatalog.py, line 463, in searchResults (Object: Traversable) File lib/python/Products/ZCatalog/Catalog.py, line 602, in searchResults File lib/python/Products/ZCatalog/Catalog.py, line 555, in _indexedSearch TypeError: (see above) This seems to be a simple type incompatibility error. Attached is a patch that fixes this. In Collector, http://classic.zope.org:8080/Collector/1586/view -- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net
*** Catalog.py.orig --- Catalog.py *************** *** 552,558 **** if intset: append((k,LazyMap(self.__getitem__, intset))) else: ! for r in rs: append((sort_index._unindex[r], LazyMap(self.__getitem__,[r]))) --- 552,558 ---- if intset: append((k,LazyMap(self.__getitem__, intset))) else: ! for r,x in rs.items(): append((sort_index._unindex[r], LazyMap(self.__getitem__,[r])))