Changeset 591

Show
Ignore:
Timestamp:
10/23/06 10:04:08
Author:
chervol
Message:

added draft portlets, fixed the listing methods

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • SimpleBlog/branches/plone-2.5/SimpleBlogTool.py

    r590 r591  
    190190            result = startpoint.portal_catalog.searchResults(review_state=self._getState(), meta_type='BlogEntry', EntryCategory=c,  path={'query':self.getObjectPath(startpoint),'level':0}) 
    191191            rescats[c]=len(result) 
    192         return rescats         
     192        return rescats 
    193193     
    194194    security.declarePublic('getSortedKeys') 
     
    273273 
    274274    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): 
    276276        # 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 
    296297        if maxResults==0: 
    297298            return results 
     
    299300            return results[:self._getMaxItemsInPortlet()] 
    300301        else: 
    301             return results[:maxResults]       
    302          
    303          
     302            return results[:maxResults] 
     303 
    304304    security.declarePublic('searchForDay') 
    305305    def searchForDay(self, context, date): 
    306306        startpoint = self.getStartpoint(context, fromHere=0) 
    307307        # 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', 
    310310                    'end': DateTime(date).latestTime(), 'end_usage':'range:max'} 
    311311        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}, 
    316316                                                             sort_order='reverse', sort_on='effective') 
    317          
    318          
    319317        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}, 
    324322                                                             sort_order='reverse', sort_on='effective') 
    325          
    326323        results = resultsTop + resultsNoTop 
    327324        return results 
    328     
     325 
    329326    security.declarePublic('getUnpublishedEntries') 
    330327    def getUnpublishedEntries(self, blog): 
     
    335332        entries = self.searchForEntries(blog, filterState=0, maxResults=0, fromHere=1, **query) 
    336333        return entries 
    337     
     334 
    338335    security.declarePublic('blogHasEntries') 
    339336    def blogHasEntries(self, context, fromHere=0): 
     
    344341        """ 
    345342        startpoint = self.getStartpoint(context, fromHere=0) 
    346          
     343 
    347344        # get all entries, doesn't matter what state they're in 
    348345        results = startpoint.portal_catalog.searchResults(meta_type='BlogEntry', path={'query':self.getObjectPath(startpoint),'level':0})         
    349          
     346 
    350347        if results: 
    351348            return True 
  • SimpleBlog/branches/plone-2.5/content/blog.py

    r590 r591  
    275275        query['getAlwaysOnTop']=1 
    276276        if filterState: 
    277             query['review_state']=publishedState             
     277            query['review_state']=publishedState 
     278        if maxResults: 
     279            query['sort_limit'] = maxResults 
    278280        # first the items that need to be listed on top 
    279281        localOnTop = self.portal_catalog.searchResults(query, meta_type='BlogEntry', path={'query':self.simpleblog_tool.getObjectPath(self),'level':0}, sort_order='reverse', sort_on='effective') 
     
    285287 
    286288        # 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=[] 
    291293 
    292294        # 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()] 
    295297        # so, now we have: 
    296298        # total = localOnTop + foreignOnTop + localNoTop + foreignNoTop 
    297299        # 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 + localOnTop 
    305         onBottom = foreignNoTop + localNoTop 
    306         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()))) 
    313315        if join: 
    314316            results = onTop+onBottom