Ben Bangert avatar Ben Bangert committed 8658ea3

Adding presliced list option to avoid slicing when list is already sliced

Comments (0)

Files changed (1)

webhelpers/paginate.py

         
     """
     def __init__(self, collection, page=1, items_per_page=20,
-        item_count=None, sqlalchemy_session=None, *args, **kwargs):
+        item_count=None, sqlalchemy_session=None, presliced_list=False,
+        *args, **kwargs):
         """Create a "Page" instance.
 
         Parameters:
             If this parameter is not given then the paginator will count
             the number of elements in the collection every time a "Page"
             is created. Giving this parameter will speed up things.
+        
+        presliced_list (optional)
+            Indicates whether the collection, when a list, has already
+            been sliced for the current viewing page, and thus should
+            *not* be sliced again.
 
         sqlalchemy_session (optional)
             If you want to use an SQLAlchemy (0.4) select object as a
             # We use list() so that the items on the current page are retrieved
             # only once. Otherwise it would run the actual SQL query everytime
             # .items would be accessed.
-            self.items = list(self.collection[self.first_item-1:self.last_item])
+            if presliced_list:
+                self.items = self.collection
+            else:
+                self.items = list(self.collection[self.first_item-1:self.last_item])
 
             # Links to previous and next page
             if self.page > self.first_page:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.