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)
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