src/pyams_content/features/search/portlet/__init__.py
changeset 1352 8242968d86b1
parent 1261 c9f9e7036daf
child 1389 1485db1e2b5e
equal deleted inserted replaced
1351:045be80a5645 1352:8242968d86b1
    43     def has_user_query(request):
    43     def has_user_query(request):
    44         params = request.params
    44         params = request.params
    45         return params.get('user_search', '').strip() or params.get('tag', '').strip()
    45         return params.get('user_search', '').strip() or params.get('tag', '').strip()
    46 
    46 
    47     @staticmethod
    47     @staticmethod
    48     def _get_items(request=None, limit=None, ignore_cache=False):
    48     def _get_items(request=None, start=0, length=10, limit=None, ignore_cache=False):
    49         context = get_parent(request.context, ISearchFolder)
    49         context = get_parent(request.context, ISearchFolder)
    50         if context is None:
    50         if context is None:
    51             raise StopIteration
    51             raise StopIteration
    52         else:
    52         else:
    53             if request is None:
    53             if request is None:
    54                 request = check_request()
    54                 request = check_request()
    55             params = request.params
    55             params = request.params
    56             order_by = params.get('order_by', context.order_by)
    56             order_by = params.get('order_by', context.order_by)
    57             if (order_by == RELEVANCE_ORDER) and not SearchResultsPortletSettings.has_user_query(request):
    57             if (order_by == RELEVANCE_ORDER) and \
       
    58                     not SearchResultsPortletSettings.has_user_query(request):
    58                 request.GET['order_by'] = order_by = VISIBLE_PUBLICATION_DATE_ORDER
    59                 request.GET['order_by'] = order_by = VISIBLE_PUBLICATION_DATE_ORDER
    59             yield from context.get_results(context, order_by,
    60             yield from context.get_results(context, order_by,
    60                                            reverse=order_by != RELEVANCE_ORDER,
    61                                            reverse=order_by != RELEVANCE_ORDER,
    61                                            limit=limit,
    62                                            limit=limit,
    62                                            start=int(params.get('start', 0)),
    63                                            start=int(start),
    63                                            length=int(params.get('length', 10)),
    64                                            length=int(length),
    64                                            ignore_cache=ignore_cache,
    65                                            ignore_cache=ignore_cache,
    65                                            get_count=True,
    66                                            get_count=True,
    66                                            request=request)
    67                                            request=request)
    67 
    68 
    68     def get_items(self, request=None, limit=None, ignore_cache=False):
    69     def get_items(self, request=None, start=0, length=10, limit=None, ignore_cache=False):
    69         if not (self.allow_empty_query or self.has_user_query(request)):
    70         if not (self.allow_empty_query or self.has_user_query(request)):
    70             yield from iter(((), 0),)
    71             yield from iter(((), 0), )
    71         else:
    72         else:
    72             check, items = tee(SearchResultsPortletSettings._get_items(request, limit, ignore_cache))
    73             check, items = tee(
       
    74                 SearchResultsPortletSettings._get_items(request, start, length, limit,
       
    75                                                         ignore_cache))
    73             try:
    76             try:
    74                 next(check)
    77                 next(check)
    75             except StopIteration:
    78             except StopIteration:
    76                 yield from iter(((), 0),)
    79                 yield from iter(((), 0), )
    77             else:
    80             else:
    78                 yield from items
    81                 yield from items
    79 
    82 
    80     @staticmethod
    83     @staticmethod
    81     def get_pages(request, count):
    84     def get_pages(start, length, count):
    82         params = request.params
    85         start = int(start) + 1
    83         start = int(params.get('start', 0)) + 1
    86         length = int(length)
    84         length = int(params.get('length', 10))
       
    85         current = math.ceil(start / length)
    87         current = math.ceil(start / length)
    86         nb_pages = math.ceil(count / length)
    88         nb_pages = math.ceil(count / length)
    87         return current, nb_pages
    89         return current, nb_pages
    88 
    90 
    89 
    91