]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/utils/pagination.py
Finished with node bulk management, although only option for now is to delete nodes.
[osqa.git] / forum / utils / pagination.py
index a573954e46df720761738d397e2eb280306f8078..ca7c2728b51f4f8e641ca8f9ecdbb6b6b149db9b 100644 (file)
@@ -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