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 |