def _data(self):
        if self.anonymous:
            return []
        context = aq_inner(self.context)
        workflow = getToolByName(context, 'portal_workflow')

        plone_view = getMultiAdapter((context, self.request), name=u'plone')
        getMember = getToolByName(context, 'portal_membership').getMemberById
        getIcon = plone_view.getIcon
        toLocalizedTime = plone_view.toLocalizedTime

        excludeSubsite = self.data.excludeSubsite
        catalog = getToolByName(context, 'portal_catalog')

        idnormalizer = queryUtility(IIDNormalizer)
        norm = idnormalizer.normalize
        objects = workflow.getWorklistsResults()
        items = []
        # use advanced query to filter out content in subsites
        if excludeSubsite:
            query = catalog.makeAdvancedQuery({'review_state': 'pending',
                                              'path': self.nav_root})
            query &= ~In('path', get_subsites(self.nav_root, catalog),
                         filter=True)
            results = catalog.evalAdvancedQuery(query)
            for obj in results:
                items.append(dict(
                    path=obj.getURL(),
                    title=obj.pretty_title_or_id(),
                    description=obj.Description,
                    icon=getIcon(obj).html_tag(),
                    creator=obj.Creator,
                    review_state=obj.review_state,
                    review_state_class='state-%s ' % norm(obj.review_state),
                    mod_date=toLocalizedTime(obj.ModificationDate),
                ))
            return items
        for obj in objects:
            review_state = workflow.getInfoFor(obj, 'review_state')
            creator_id = obj.Creator()
            creator = getMember(creator_id)
            if creator:
                creator_name = creator.getProperty('fullname', '') or \
                    creator_id
            else:
                creator_name = creator_id

            items.append(dict(
                path=obj.absolute_url(),
                title=obj.pretty_title_or_id(),
                description=obj.Description(),
                icon=getIcon(obj).html_tag(),
                creator=obj.Creator(),
                review_state=review_state,
                review_state_class='state-%s ' % norm(review_state),
                mod_date=toLocalizedTime(obj.ModificationDate()),
            ))
        return items
 def search_results(self):
     context = aq_inner(self.context)
     catalog = getToolByName(context, 'portal_catalog')
     path = self.navigation_root_path
     excludeSubsite = self.data.excludeSubsite
     query = catalog.makeAdvancedQuery({'path': path})
     if excludeSubsite:
         query &= ~ In('path', get_subsites(path, catalog), filter=True)
     return catalog.evalAdvancedQuery(query)
 def _data(self):
     context = aq_inner(self.context)
     catalog = getToolByName(context, 'portal_catalog')
     portal_state = getMultiAdapter((context, self.request),
                                    name=u'plone_portal_state')
     path = portal_state.navigation_root_path()
     limit = self.data.count
     state = self.data.state
     excludeSubsite = self.data.excludeSubsite
     query = catalog.makeAdvancedQuery({'portal_type': 'News Item',
                                       'review_state': state,
                                       'path': path,
                                       'sort_on': 'Date',
                                       'sort_order': 'reverse',
                                       'sort_limit': limit})
     if excludeSubsite:
         query &= ~ In('path', get_subsites(path, catalog), filter=True)
     results = catalog.evalAdvancedQuery(query, (('Date', 'desc'),))
     return results[:limit]
 def _data(self):
     context = aq_inner(self.context)
     catalog = getToolByName(context, "portal_catalog")
     limit = self.data.count
     state = self.data.state
     path = self.navigation_root_path
     excludeSubsite = self.data.excludeSubsite
     query = catalog.makeAdvancedQuery(
         {
             "portal_type": "Event",
             "review_state": state,
             "end": {"query": DateTime(), "range": "min"},
             "path": path,
             "sort_on": "start",
             "sort_limit": limit,
         }
     )
     if excludeSubsite:
         query &= ~In("path", get_subsites(path, catalog), filter=True)
     results = catalog.evalAdvancedQuery(query, ("start",))
     return results[:limit]
 def get_subsite_paths(self):
     context = aq_inner(self.context)
     catalog = getToolByName(context, 'portal_catalog')
     path = self.navigation_root_path
     return get_subsites(path, catalog)