Re: [Zope] reverse sort
The following external method has proven VERY useful for us at Hiperlogica. I believe it does what you want. ____________ WHAT IT DOES The function returns a list of documents in a folder, sorted by a 'pub_date' string attribute which must be present in all documents. The sort order is descending. A property of type 'list' named 'exclude' can be used to list the id's of documents which should not be listed. _____________________ HOW TO USE IT IN DTML To generate a list of titles with links: <!--#in hx_list_docs--> <A HREF="<!--#var id-->"><!--#var title--></A> <!--#/in--> To generate a similar list, but looking inside a folder called 'folder1': <!--#in expr="hx_list_docs(folder1)"--> <A HREF="folder1/<!--#var id-->"><!--#var title--></A> <!--#/in--> To generate a list with only the tree most recent documents of the current folder: <!--#in expr="hx_list_docs(PARENTS[0],3)"--> <A HREF="<!--#var id-->"><!--#var title--></A> <!--#/in--> ____ NOTE We did not use the actual date of the document because (1) we did not know how to obtain it and (2) our customer wanted to be able to alter the date. We used 'pub_dates' formatted like this: '1999/05/12 14:32:02'. You could put anything inside pub_date to determine the sort order. ___________ SOURCE CODE def hx_list_docs(self, max=0): dic = {} #find documents for doc in self.objectValues(['DTML Document']): #collect if it is not in the exclude list if not ( doc.id() in self.exclude ): dic[doc.pub_date] = doc dates = dic.keys() dates.sort() dates.reverse() list = [] for date in dates: list.append( dic[date] ) if (max != 0) and (len(list) == max): break return list -- Best regards, Luciano -- Hiperlógica <http://hiper.com.br> Automação de web-sites || Web-site automation
participants (1)
-
Luciano Ramalho