Skip to content

Commit 8bb2413

Browse files
authored
fix show all functionality (#101)
1 parent fc9f221 commit 8bb2413

File tree

3 files changed

+21
-9
lines changed

3 files changed

+21
-9
lines changed

django_typesense/admin.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,13 @@ def get_paginator(
100100
)
101101

102102
def get_typesense_search_results(
103-
self,
104-
request,
105-
search_term: str,
106-
page_num: int = 1,
107-
filter_by: str = "",
108-
sort_by: str = "",
103+
self,
104+
request,
105+
search_term: str,
106+
page_num: int = 1,
107+
filter_by: str = "",
108+
sort_by: str = "",
109+
list_per_page: int = None
109110
):
110111
"""
111112
Get the results from typesense with the provided filtering, sorting, pagination and search parameters applied
@@ -116,17 +117,20 @@ def get_typesense_search_results(
116117
page_num: The requested page number
117118
filter_by: The filtering parameters
118119
sort_by: The sort parameters
120+
list_per_page: The number of results to return per page
119121
120122
Returns:
121123
A list of typesense results
122124
"""
125+
if list_per_page is None:
126+
list_per_page = self.list_per_page
123127

124128
results = typesense_search(
125129
collection_name=self.model.collection_class.schema_name,
126130
q=search_term or "*",
127131
query_by=self.model.collection_class.query_by_fields,
128132
page=page_num,
129-
per_page=self.list_per_page,
133+
per_page=list_per_page,
130134
filter_by=filter_by,
131135
sort_by=sort_by,
132136
)

django_typesense/changelist.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@ def get_results(self, request):
152152

153153
# Get the list of objects to display on this page.
154154
if (self.show_all and can_show_all) or not multi_page:
155-
# Reuse values defined in paginator
155+
paginator = self.model_admin.get_paginator(
156+
request, self.results, self.list_max_show_all
157+
)
156158
result_list = paginator.results
157159
else:
158160
try:
@@ -396,6 +398,7 @@ def get_typesense_results(self, request):
396398
self.page_num,
397399
filter_by=filter_by,
398400
sort_by=sort_by,
401+
list_per_page=self.list_max_show_all # so that if we have all the data if we need to show all
399402
)
400403

401404
# Set query string for clearing all filters.

django_typesense/paginator.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,12 @@ def prepare_results(self):
4949

5050
def page(self, number):
5151
"""Return a Page object for the given 1-based page number."""
52-
return self._get_page(self.results, number, self)
52+
number = self.validate_number(number)
53+
bottom = (number - 1) * self.per_page
54+
top = bottom + self.per_page
55+
if top + self.orphans >= self.count:
56+
top = self.count
57+
return self._get_page(self.results[bottom:top], number, self)
5358

5459
@cached_property
5560
def count(self):

0 commit comments

Comments
 (0)