Skip to content

Instantly share code, notes, and snippets.

@sdfsdhgjkbmnmxc
Created December 6, 2014 18:12
Show Gist options
  • Save sdfsdhgjkbmnmxc/14f01f97b536178d9626 to your computer and use it in GitHub Desktop.
Save sdfsdhgjkbmnmxc/14f01f97b536178d9626 to your computer and use it in GitHub Desktop.
class LargePaginator(Paginator):
def _get_page(self, *args, **kwargs):
return LargePage(*args, **kwargs)
class LargePage(Page):
HELLIP = None
def pages_to_show(self):
pages_wanted = {
1,
2,
self.number - 2,
self.number - 1,
self.number,
self.number + 1,
self.number + 2,
self.paginator.num_pages - 1,
self.paginator.num_pages,
}
pages_to_show = set(self.paginator.page_range).intersection(pages_wanted)
pages_to_show = sorted(pages_to_show)
skip_pages = [
x[1]
for x in zip(pages_to_show[:-1], pages_to_show[1:])
if x[1] - x[0] != 1
]
for i in skip_pages:
pages_to_show.insert(pages_to_show.index(i), self.HELLIP)
return pages_to_show
{% if page_obj.paginator.num_pages > 1 %}
<div class="hr-line-dashed"></div>
<div class="text-center">
<div class="btn-group">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}{{ additional }}" class="btn btn-white"><i class="fa fa-chevron-left"></i></a>
{% else %}
<button class="btn btn-white" type="button" disabled><i class="fa fa-chevron-left"></i> </button>
{% endif %}
{% with pages_to_show=page_obj.pages_to_show %}
{% if pages_to_show %}
{% for p in pages_to_show %}
{% if p %}
<a href="?page={{ p }}{{ additional }}" class="btn btn-white{% if p == page_obj.number %} active{% endif %}">{{ p }}</a>
{% else %}
<a class="btn btn-white" disabled href="#">&hellip;</a>
{% endif %}
{% endfor %}
{% else %}
{% for p in page_obj.paginator.page_range %}
<a href="?page={{ p }}{{ additional }}" class="btn btn-white{% if p == page_obj.number %} active{% endif %}">{{ p }}</a>
{% endfor %}
{% endif %}
{% endwith %}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}{{ additional }}" class="btn btn-white"><i class="fa fa-chevron-right"></i></a>
{% else %}
<button class="btn btn-white" type="button" disabled><i class="fa fa-chevron-right"></i> </button>
{% endif %}
</div>
</div>
{% endif %}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment