So the existing Paginator class is great for the standard use case. But recently I wanted to be have a Paginator that would return *at least per_page *x items. I called it FlexPaginator. My use case was that I had a group_by value that I wanted to keep together on the same page, and so the rows per page needed to grow. When it was all said an done, I had a completely different looking page function on my FlexPaginator.
Here's the default one for reference: def page(self, number): """ Returns a Page object for the given 1-based page number. """ number = self.validate_number(number) bottom = (number - 1) * self.per_page top = bottom + self.per_page if top + self.orphans >= self.count: top = self.count return self._get_page(self.object_list[bottom:top], number, self) I'd like to refactor several things about it that would have made it more abstract and easier for me, but still keep it backwards compatible: - rename bottom and top variables, instead self.first and self.last respectively - turn their inline calculations into function calls to a new, self.first() and self.last() - move the entire self.object_list[bottom:top] into its own line - move that specific logic into a function called self.get_page_objects - store that function's value into self.page_objects Any comments? -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at https://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/b11166ec-0800-48f6-a647-62f41b67631c%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.