diff --git a/boards/views/all_threads.py b/boards/views/all_threads.py --- a/boards/views/all_threads.py +++ b/boards/views/all_threads.py @@ -65,7 +65,7 @@ class AllThreadsView(PostMixin, BaseBoar params[CONTEXT_FORM] = form params[PARAMETER_BANNERS] = Banner.objects.order_by('-id').all() - self.get_page_context(paginator, params, page) + self.get_page_context(paginator, params, page, request.GET.dict()) return render(request, TEMPLATE, params) @@ -82,7 +82,7 @@ class AllThreadsView(PostMixin, BaseBoar return self.get(request, form) - def get_page_context(self, paginator, params, page): + def get_page_context(self, paginator, params, page, url_params): """ Get pagination context variables """ @@ -92,20 +92,24 @@ class AllThreadsView(PostMixin, BaseBoar params[PARAMETER_CURRENT_PAGE] = current_page if current_page.has_previous(): params[PARAMETER_PREV_LINK] = self.get_previous_page_link( - current_page) + current_page, url_params) if current_page.has_next(): - params[PARAMETER_NEXT_LINK] = self.get_next_page_link(current_page) + params[PARAMETER_NEXT_LINK] = self.get_next_page_link(current_page, + url_params) + + def get_previous_page_link(self, current_page, params): + params['page'] = current_page.previous_page_number() + return self.get_reverse_url(params) - def get_previous_page_link(self, current_page): - return self.get_reverse_url() + '?page=' \ - + str(current_page.previous_page_number()) + def get_next_page_link(self, current_page, params): + params['page'] = current_page.next_page_number() + return self.get_reverse_url(params) - def get_next_page_link(self, current_page): - return self.get_reverse_url() + '?page=' \ - + str(current_page.next_page_number()) + def get_url_params(self, params): + return '?' + '&'.join(['{}={}'.format(key, params[key]) for key in params.keys()]) - def get_reverse_url(self): - return reverse('index') + def get_reverse_url(self, params): + return reverse('index') + self.get_url_params(params) @transaction.atomic def create_thread(self, request, form: ThreadForm, html_response=True): diff --git a/boards/views/tag_threads.py b/boards/views/tag_threads.py --- a/boards/views/tag_threads.py +++ b/boards/views/tag_threads.py @@ -55,9 +55,8 @@ class TagView(AllThreadsView, Dispatcher return params - def get_reverse_url(self): - return reverse('tag', kwargs={ - 'tag_name': self.tag_name}) + def get_reverse_url(self, params): + return reverse('tag', kwargs={'tag_name': self.tag_name}) + self.get_url_params(params) def get(self, request, tag_name, form=None): self.tag_name = tag_name