示例#1
0
 def testBaseMakeQueryWithBrains(self):
     querybuilder = BaseQueryBuilder(self.portal, self.request)
     results = querybuilder._makequery(query=self.query,
                                       brains=True,
                                       sort_on="created")
     self.assertEqual(len(results), self.total_num_docs)
     self.assertEqual(results[0].getURL(),
                      'http://nohost/plone/testfolder-01/testpage-01-01')
     self.assertEqual(results[1].getURL(),
                      'http://nohost/plone/testfolder-01/testpage-01-02')
     self.assertEqual(results[2].getURL(),
                      'http://nohost/plone/testfolder-01/testpage-01-03')
示例#2
0
    def queryCatalog(self, limit):
        """
        """
        querybuilder = QueryBuilder(self, self.request)
        if not hasattr(self.data, 'sort_on'):
            self.data.sort_on = 'effective'
        if not hasattr(self.data, 'sort_order'):
            self.data.sort_order = False
        if not hasattr(self.data, 'sort_folderorder'):
            self.data.sort_folderorder = False

        sort_order = 'descending' if self.data.sort_order else 'ascending'
        sort_on = self.data.sort_on

        if self.data.sort_folderorder:
            sort_on = 'getObjPositionInParent'

        query = list(self.data.query)

        if ICollection.providedBy(self.context):
            query += self.context.query and self.context.query or []
            parent = aq_parent(aq_inner(self.context))
            if ICollection.providedBy(parent):
                query += parent.query and parent.query or []
        return querybuilder(query=query,
                            sort_on=sort_on,
                            sort_order=sort_order,
                            limit=limit)
示例#3
0
    def results(self,
                batch=True,
                b_start=0,
                b_size=None,
                inherit=False,
                extra=[]):
        querybuilder = QueryBuilder(self, self.REQUEST)
        sort_order = 'reverse' if self.sort_reversed else 'ascending'
        if not b_size:
            b_size = self.item_count
        query = isinstance(self.query, list) and deepcopy(self.query) or []
        if inherit:
            parent = aq_parent(self)
            if ICollection.providedBy(parent):
                query += parent.query and deepcopy(parent.query) or []
                inparent = aq_parent(self)
                if ICollection.providedBy(inparent):
                    query += inparent.query and deepcopy(inparent.query) or []
        query = query + extra

        res = querybuilder(query=query,
                           batch=batch,
                           b_start=b_start,
                           b_size=b_size,
                           sort_on=self.sort_on,
                           sort_order=sort_order,
                           limit=self.limit)
        return res
示例#4
0
 def SearchResults(self):
     """Search results"""
     site = getSite()
     options = dict(original_context=site)
     querybuilder = QueryBuilder(site, self.request)
     listing = querybuilder(query=self.value)
     return getMultiAdapter((listing, self.request),
                            name='display_query_results')(**options)
示例#5
0
 def results(self, batch=True, b_start=0, b_size=None):
     querybuilder = QueryBuilder(self, self.REQUEST)
     sort_order = 'reverse' if self.sort_reversed else 'ascending'
     if not b_size:
         b_size = self.item_count
     return querybuilder(query=self.query,
                         batch=batch,
                         b_start=b_start,
                         b_size=b_size,
                         sort_on=self.sort_on,
                         sort_order=sort_order,
                         limit=self.limit)
示例#6
0
 def results(self, collection, batch=True, b_start=0, b_size=None,
             sort_on=None, limit=None, brains=False):
     # XXX This code is from plone.app.contenttypes.content.py, we need this
     # here until my pull request is merged.
     # https://github.com/plone/plone.app.contenttypes/pull/87
     querybuilder = QueryBuilder(collection, self.request)
     sort_order = 'reverse' if collection.sort_reversed else 'ascending'
     if not b_size:
         b_size = collection.item_count
     if not sort_on:
         sort_on = collection.sort_on
     if not limit:
         limit = collection.limit
     return querybuilder(
         query=collection.query, batch=batch, b_start=b_start, b_size=b_size,
         sort_on=sort_on, sort_order=sort_order,
         limit=limit, brains=brains
     )
示例#7
0
    def results(self, batch=True, b_start=0, b_size=None,
                sort_on=None, limit=None):
        querybuilder = QueryBuilder(self, self.REQUEST)

        kw_args = {
            'query': self.query,
            'batch': batch,
            'b_start': b_start,
            'sort_order': 'reverse' if self.sort_reversed else 'ascending'
        }

        if not b_size and self.item_count:
            kw_args['b_size'] = self.item_count
        if not sort_on and self.sort_on:
            kw_args['sort_on'] = self.sort_on
        if not limit and self.limit:
            kw_args['limit'] = self.limit

        return querybuilder(**kw_args)
示例#8
0
    def get(self, instance, **kwargs):
        """Get the query dict from the request or from the object"""
        raw = kwargs.get('raw', None)
        value = self.getRaw(instance)
        if raw == True:
            # We actually wanted the raw value, should have called getRaw
            return value
        querybuilder = QueryBuilder(instance, getSite().REQUEST)

        sort_on = kwargs.get('sort_on', instance.getSort_on())
        sort_order = 'reverse' if instance.getSort_reversed() else 'ascending'
        limit = kwargs.get('limit', instance.getLimit())
        return querybuilder(query=value,
                            batch=kwargs.get('batch', False),
                            b_start=kwargs.get('b_start', 0),
                            b_size=kwargs.get('b_size', 30),
                            sort_on=sort_on,
                            sort_order=sort_order,
                            limit=limit,
                            brains=kwargs.get('brains', False),
                            custom_query=kwargs.get('custom_query', {}))