# -*- coding: utf-8 -*- __author__ = 'SDE' def get_paging_Dict(request, elements_count, elements_on_page, from_page, to_page=None): pages_count = elements_count / elements_on_page if elements_count % elements_on_page > 0: pages_count = pages_count + 1 pages = [] if to_page: cur_page = to_page else: cur_page = from_page # количство страниц, которое отображается в ряд (без разделенного пэйджинга) pages_wo_separated_paging = 20 if pages_countpages_count+1-pages_count_wo_separate_for_side: mid_left_page = (pages_count+1-pages_count_for_begin_end_paging-pages_count_wo_separate_for_side) / 2 #считаем сколько страниц внутри точек mid_left_page = pages_count_for_begin_end_paging + mid_left_page # это и есть средняя страница в левой части pages.append((u'...',mid_left_page)) for p in range(pages_count+1-pages_count_wo_separate_for_side,pages_count-pages_count_for_begin_end_paging+1): pages.append((p,p)) # elif num_current_page>pages_count-6: # mid_left_page = (pages_count -2 -7) / 2 #считаем сколько страниц внутри точек # mid_left_page = 3 + mid_left_page # это и есть средняя страница в левой части # pages.append((u'...',mid_left_page)) # pages.append((pages_count-6,pages_count-6)) # pages.append((pages_count-5,pages_count-5)) # pages.append((pages_count-4,pages_count-4)) # pages.append((pages_count-3,pages_count-3)) else: mid_page = cur_page mid_left_page = (mid_page-1 -pages_count_for_begin_end_paging)/2 + pages_count_for_begin_end_paging mid_rigth_page = (pages_count - (mid_page+pages_count_for_begin_end_paging))/2 + mid_page+1 # количество страниц, которые добавляются слева и и справа от текущей центральной pages_count_for_add_to_left_and_right_from_current_central_page = center_pages_count / 2 pages.append((u'...',mid_left_page)) for p in range(mid_page-pages_count_for_add_to_left_and_right_from_current_central_page,mid_page+pages_count_for_add_to_left_and_right_from_current_central_page+1): pages.append((p,p)) pages.append((u'...',mid_rigth_page)) # mid_left_page = (mid_page-1 -3)/2 + 3 # mid_rigth_page = (pages_count - (mid_page+1 +2))/2 + mid_page+1 # # pages.append((u'...',mid_left_page)) # pages.append((mid_page-1,mid_page-1)) # pages.append((mid_page,mid_page)) # pages.append((mid_page+1,mid_page+1)) # pages.append((u'...',mid_rigth_page)) for p in range(pages_count+1-pages_count_for_begin_end_paging,pages_count+1): pages.append((p,p)) # pages.append((pages_count-2,pages_count-2)) # pages.append((pages_count-1,pages_count-1)) # pages.append((pages_count,pages_count)) if not to_page: to_page = from_page return { 'paging' : pages, 'from_page' : from_page, 'to_page' : to_page, 'max_page' : pages_count, }