X-Git-Url: https://git.openstreetmap.org/osqa.git/blobdiff_plain/b885b2a795c839540f299a7e5f33ed4b670101ab..8b75f5c11b8a6fb017584a3926a01464a4040ce7:/forum/utils/pagination.py diff --git a/forum/utils/pagination.py b/forum/utils/pagination.py index a573954..ca7c272 100644 --- a/forum/utils/pagination.py +++ b/forum/utils/pagination.py @@ -19,11 +19,11 @@ class SimpleSort(SortBase): super(SimpleSort, self) .__init__(label, description) self.order_by = order_by + def _get_order_by(self): + return isinstance(self.order_by, (list, tuple)) and self.order_by or [self.order_by] + def apply(self, objects): - if isinstance(self.order_by, (list, tuple)): - return objects.order_by(*self.order_by) - else: - return objects.order_by(self.order_by) + return objects.order_by(*self._get_order_by()) class PaginatorContext(object): visible_page_range = 5 @@ -283,6 +283,9 @@ def _paginated(request, objects, context): url_builder = lambda s: mark_safe("%s%s%s=%s" % (base_path, url_joiner, context.SORT, s)) sorts = [(n, s.label, url_builder(n), strip_tags(s.description)) for n, s in context.sort_methods.items()] + for name, label, url, descr in sorts: + paginator.__dict__['%s_sort_link' % name] = url + return sort_tabs_template.render(template.Context({ 'current': sort, 'sorts': sorts, @@ -290,8 +293,10 @@ def _paginated(request, objects, context): })) paginator.sort_tabs = sort_tabs() paginator.sort_description = mark_safe(context.sort_methods[sort].description) + paginator.current_sort = sort else: paginator.sort_tabs = paginator.sort_description = '' + paginator.current_sort = '' context.set_preferences(request, session_prefs) objects.paginator = paginator