##// END OF EJS Templates
Post deletion when the thread is deleted is already handled by django. No need to implement it manually
Post deletion when the thread is deleted is already handled by django. No need to implement it manually

File last commit:

r1200:570dd244 default
r1226:e8ff96e4 default
Show More
paginator.py
61 lines | 1.5 KiB | text/x-python | PythonLexer
__author__ = 'neko259'
from django.core.paginator import Paginator
PAGINATOR_LOOKAROUND_SIZE = 2
def get_paginator(*args, **kwargs):
return DividedPaginator(*args, **kwargs)
class DividedPaginator(Paginator):
lookaround_size = PAGINATOR_LOOKAROUND_SIZE
current_page = 0
def _left_range(self):
return self.page_range[:self.lookaround_size]
def _right_range(self):
pages = self.num_pages-self.lookaround_size
if pages <= 0:
return []
else:
return self.page_range[pages:]
def _center_range(self):
index = self.page_range.index(self.current_page)
start = max(self.lookaround_size, index - self.lookaround_size)
end = min(self.num_pages - self.lookaround_size, index + self.lookaround_size + 1)
return self.page_range[start:end]
def get_divided_range(self):
dr = list()
dr += self._left_range()
dr += self._center_range()
dr += self._right_range()
# Remove duplicates
dr = list(set(dr))
dr.sort()
return dr
def get_dividers(self):
dividers = []
prev_page = 1
for page in self.get_divided_range():
if page - prev_page > 1:
dividers.append(page)
# There can be no more than 2 dividers, so don't bother going
# further
if len(dividers) > 2:
break
prev_page = page
return dividers