Changeset 591
- Timestamp:
- 10/23/06 10:04:08
- Files:
-
- SimpleBlog/branches/plone-2.5/SimpleBlogTool.py (modified) (5 diffs)
- SimpleBlog/branches/plone-2.5/content/blog.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
SimpleBlog/branches/plone-2.5/SimpleBlogTool.py
r590 r591 190 190 result = startpoint.portal_catalog.searchResults(review_state=self._getState(), meta_type='BlogEntry', EntryCategory=c, path={'query':self.getObjectPath(startpoint),'level':0}) 191 191 rescats[c]=len(result) 192 return rescats 192 return rescats 193 193 194 194 security.declarePublic('getSortedKeys') … … 273 273 274 274 security.declarePublic('searchForEntries') 275 def collectEntries(self, context, category=None, maxResults=None, filterState=1, **kwargs):275 def collectEntries(self, context, category=None, maxResults=None, filterState=1, allBlogs=0 **kwargs): 276 276 # first get all the blogs 277 query = {'meta_type':'Blog', 278 'path':{'query':self.getObjectPath(context),'level':0} 279 } # used meta_type because for some reason, syndication objects also show up. 280 blogs = [b.getObject() for b in self.portal_catalog.searchResults(query)] 281 282 onTop=[] 283 atBottom=[] 284 # now collect all the entries 285 for blog in blogs: 286 tmpTop, tmpBottom = blog.getEntries(category=category, maxResults=0, filterState = filterState, sort=0, **kwargs) 287 onTop = onTop+tmpTop 288 atBottom = atBottom+tmpBottom 289 290 #sort 291 onTop.sort((lambda x,y:cmp(y.effective(), x.effective()))) 292 atBottom.sort((lambda x,y:cmp(y.effective(), x.effective()))) 293 294 results = onTop+atBottom 295 277 if allBlogs: 278 query = {'meta_type':'Blog', 279 'path':{'query':self.getObjectPath(context),'level':0} 280 } # used meta_type because for some reason, syndication objects also show up. 281 blogs = [b.getObject() for b in self.portal_catalog.searchResults(query)] 282 onTop=[] 283 atBottom=[] 284 # now collect all the entries 285 for blog in blogs: 286 tmpTop, tmpBottom = blog.getEntries(category=category, maxResults=maxResults, filterState = filterState, sort=0, **kwargs) 287 onTop = onTop+tmpTop 288 atBottom = atBottom+tmpBottom 289 #sort 290 onTop.sort((lambda x,y:cmp(y.effective(), x.effective()))) 291 atBottom.sort((lambda x,y:cmp(y.effective(), x.effective()))) 292 293 results = onTop+atBottom 294 else: 295 context.getEntries(category=category, maxResults=maxResults, filterState = filterState, sort=0, join=1, skipOnTop=1, **kwargs) 296 296 297 if maxResults==0: 297 298 return results … … 299 300 return results[:self._getMaxItemsInPortlet()] 300 301 else: 301 return results[:maxResults] 302 303 302 return results[:maxResults] 303 304 304 security.declarePublic('searchForDay') 305 305 def searchForDay(self, context, date): 306 306 startpoint = self.getStartpoint(context, fromHere=0) 307 307 # now we have the starting point for our search 308 309 query={'start': DateTime(date).earliestTime(), 'start_usage': 'range:min', 308 309 query={'start': DateTime(date).earliestTime(), 'start_usage': 'range:min', 310 310 'end': DateTime(date).latestTime(), 'end_usage':'range:max'} 311 311 query['getAlwaysOnTop']=1 312 resultsTop = startpoint.portal_catalog.searchResults(query, 313 review_state=self._getState(), 314 meta_type='BlogEntry', 315 path={'query':self.getObjectPath(startpoint),'level':0}, 312 resultsTop = startpoint.portal_catalog.searchResults(query, 313 review_state=self._getState(), 314 meta_type='BlogEntry', 315 path={'query':self.getObjectPath(startpoint),'level':0}, 316 316 sort_order='reverse', sort_on='effective') 317 318 319 317 query['getAlwaysOnTop']=0 320 resultsNoTop = startpoint.portal_catalog.searchResults(query, 321 review_state=self._getState(), 322 meta_type='BlogEntry', 323 path={'query':self.getObjectPath(startpoint),'level':0}, 318 resultsNoTop = startpoint.portal_catalog.searchResults(query, 319 review_state=self._getState(), 320 meta_type='BlogEntry', 321 path={'query':self.getObjectPath(startpoint),'level':0}, 324 322 sort_order='reverse', sort_on='effective') 325 326 323 results = resultsTop + resultsNoTop 327 324 return results 328 325 329 326 security.declarePublic('getUnpublishedEntries') 330 327 def getUnpublishedEntries(self, blog): … … 335 332 entries = self.searchForEntries(blog, filterState=0, maxResults=0, fromHere=1, **query) 336 333 return entries 337 334 338 335 security.declarePublic('blogHasEntries') 339 336 def blogHasEntries(self, context, fromHere=0): … … 344 341 """ 345 342 startpoint = self.getStartpoint(context, fromHere=0) 346 343 347 344 # get all entries, doesn't matter what state they're in 348 345 results = startpoint.portal_catalog.searchResults(meta_type='BlogEntry', path={'query':self.getObjectPath(startpoint),'level':0}) 349 346 350 347 if results: 351 348 return True SimpleBlog/branches/plone-2.5/content/blog.py
r590 r591 275 275 query['getAlwaysOnTop']=1 276 276 if filterState: 277 query['review_state']=publishedState 277 query['review_state']=publishedState 278 if maxResults: 279 query['sort_limit'] = maxResults 278 280 # first the items that need to be listed on top 279 281 localOnTop = self.portal_catalog.searchResults(query, meta_type='BlogEntry', path={'query':self.simpleblog_tool.getObjectPath(self),'level':0}, sort_order='reverse', sort_on='effective') … … 285 287 286 288 # foreign items 287 if self.getAllowCrossPosting():288 foreignEntries = self.getForeignEntries()289 else:290 foreignEntries=[]289 #if self.getAllowCrossPosting(): 290 # foreignEntries = self.getForeignEntries() 291 #else: 292 # foreignEntries=[] 291 293 292 294 # filter out the always on top entries 293 foreignOnTop = [e for e in foreignEntries if e.getAlwaysOnTop()]294 foreignNoTop = [e for e in foreignEntries if not e.getAlwaysOnTop()]295 #foreignOnTop = [e for e in foreignEntries if e.getAlwaysOnTop()] 296 #foreignNoTop = [e for e in foreignEntries if not e.getAlwaysOnTop()] 295 297 # so, now we have: 296 298 # total = localOnTop + foreignOnTop + localNoTop + foreignNoTop 297 299 # and that needs to be sorted 298 if addCrossPostInfo:299 # make each object a tuple (obj, <iscrosspost>)300 foreignOnTop = [(e,1) for e in foreignOnTop]301 foreignNoTop = [(e,1) for e in foreignNoTop]302 localOnTop = [(e,0) for e in localOnTop]303 localNoTop = [(e,0) for e in localNoTop]304 onTop = foreignOnTop + localOnTop305 onBottom = foreignNoTop + localNoTop306 if sort and foreignEntries:307 if addCrossPostInfo:308 onTop.sort((lambda x,y:cmp(y[0].effective(), x[0].effective())))309 onBottom.sort((lambda x,y:cmp(y[0].effective(), x[0].effective())))310 else:311 onTop.sort((lambda x,y:cmp(y.effective(), x.effective())))312 onBottom.sort((lambda x,y:cmp(y.effective(), x.effective())))300 #if addCrossPostInfo: 301 # # make each object a tuple (obj, <iscrosspost>) 302 # foreignOnTop = [(e,1) for e in foreignOnTop] 303 # foreignNoTop = [(e,1) for e in foreignNoTop] 304 # localOnTop = [(e,0) for e in localOnTop] 305 # localNoTop = [(e,0) for e in localNoTop] 306 onTop = localOnTop #foreignOnTop + 307 onBottom = localNoTop #foreignNoTop + 308 #if sort and foreignEntries: 309 # if addCrossPostInfo: 310 # onTop.sort((lambda x,y:cmp(y[0].effective(), x[0].effective()))) 311 # onBottom.sort((lambda x,y:cmp(y[0].effective(), x[0].effective()))) 312 # else: 313 # onTop.sort((lambda x,y:cmp(y.effective(), x.effective()))) 314 # onBottom.sort((lambda x,y:cmp(y.effective(), x.effective()))) 313 315 if join: 314 316 results = onTop+onBottom
