示例#1
0
    def getSearchDestinationList(self, type_=None):
        """ Return list of destinatons """
        catalog = getToolByName(self.context, 'portal_catalog')

        portal = api.portal.get()
        container_path = '/'.join(portal.getPhysicalPath())

        query = (MatchGlob('Title',
                    self.request.get('SearchableText', '') + '*') | \
                MatchGlob('Description', 
                    self.request.get('SearchableText', '') + '*')) & \
                Eq('path', container_path) & \
                In('portal_type', self._get_container_types())

        obj = lambda o: o if ISiteRoot.providedBy(o) else o.getObject()

        results = IContentListing(catalog.evalAdvancedQuery(query))
        results = [self._info_from_content(x) for x in results
                   if self._is_container_selectable(obj(x), type_)]
        results.sort(lambda x, y: cmp(x['title'], y['title']))
        return simplejson.dumps(results)
示例#2
0
    def get_tree(self, uid=None, type_=None):
        if type_ is None:
            type_ = self.request.get('type_', None)

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

        container_path = ''
        if uid is not None:
            container = catalog(UID=uid)
            if len(container) == 1:
                container = container[0]
                container_path = container.getPath()

        if not container_path:
            portal = api.portal.get()
            container_path = '/'.join(portal.getPhysicalPath())

        query = {'portal_type': self._get_container_types(),
                 'path': {'query': container_path, 'depth': 1}}

        results = IContentListing(catalog(**query))
        results = [self._info_from_content(x, type_) for x in results]
        results.sort(lambda x, y: cmp(x['title'], y['title']))
        return results