def page(self, number, per_page):
		if not number:
			if not self._request:
				raise Exception('Requires with_request')
			number = self.get_page_from_request(self._request)
		if self._group_by and not self._count:
			qset = deepcopy(self.queryset).values(*self._group_by)
			if self._distinct:
				qset = qset.distinct()
			self._count = qset.count()
		per_page = per_page or self.PER_PAGE
		paginator = Paginator(self.instance.rows, per_page)
		if self._count:
			hits = max(1, self._count - paginator.orphans)
			paginator._num_pages = int(ceil(hits / float(per_page)))
			# The following line also avoids an extra (and wrong) COUNT(*) query.
			paginator._count = self._count
		try:
			current_page = paginator.page(number)
		except (EmptyPage, InvalidPage):
			page_number = 1
			current_page = paginator.page(page_number)
		paginator.limited_page_range = CustomPaginator.get_page_range(paginator.num_pages, number)
		return current_page
Example #2
0
def empty(request):
    paper = request.GET.get('tab', '')
    paper_order_list = ["All"] + [i[0] for i in (Lehed.objects.values_list('name'))]
    if paper not in paper_order_list:
        paper=paper_order_list[0]
       
    #Järjestuse valik
    page_order = request.GET.get('order', '')
    page_order_list = ["id", "-id", "published", "-published", "title", "-title"]
    if page_order not in page_order_list:
        page_order=page_order_list[3]  
    category = request.GET.get('kateg', '')
    category_list = [ "All"] + [i[0] for i in kategooriad]  #lae päris kategooriate list andmebaasist, pannes esimeseks tühjad jutumärgid
    if category not in category_list:
        category=category_list[0]        
              
    #Valib esimese jupi.
    page_num = int(request.GET.get('page', 1))
    #Jagub kolmega (praegune leht, uus leht ja vana leht)
    chunk_size = 30
    #Siis saab jätta next ja prev nupud
    per_page = chunk_size/3
    chunk_stop = (page_num * per_page) + per_page
    if page_num == 1:
        chunk_stop = chunk_size
    chunk_start = chunk_stop - chunk_size
    #Teeb query
    queryset=Lehtuudis.objects.all().order_by("-id")[chunk_start:chunk_stop]
     
    if paper == "All" and category=="All":
        queryset=Lehtuudis.objects.all().order_by(page_order)[chunk_start:chunk_stop]
        chunk_max = Uudised.objects.count()
        sulud = True
    elif paper == "All":
        queryset=Lehtuudis.objects.all().filter(kategooria=category).order_by(page_order)[chunk_start:chunk_stop]
        chunk_max = Uudised.objects.filter(kategooria=category).count()
        sulud = True
    elif category == "All":
        queryset=Uudised.objects.all().filter(leht=paper).order_by(page_order)[chunk_start:chunk_stop]
        chunk_max = Uudised.objects.filter(leht=paper).count()
        sulud = False
    else:
        queryset=Uudised.objects.all().filter(leht=paper).filter(kategooria=category).order_by(page_order)[chunk_start:chunk_stop]
        chunk_max = Uudised.objects.filter(leht=paper).filter(kategooria=category).count()
        sulud = False
    
    #Viimane lehekülg
    max_pages = math.ceil(chunk_max / per_page)
    fake_num = 1
    if page_num == 1:
        chunk_stop = chunk_size
        chunk_start = 0
    elif page_num > 1 and page_num <= max_pages:
        fake_num = 2
    elif page_num > max_pages:
        fake_num = 3  
    
    
    #Teeb ta 5-objektisteks juppideks
    paginator = Paginator(queryset, per_page)
    paginator._num_pages = max_pages
    page=paginator.page(fake_num)
    page.number = page_num
    return render_to_response("empty2.html", {'kategooriad':kategooriad, 'lehed':lehed, 'page':page, 'order':page_order, 'kategooria': category, 'sulud':sulud, 'tab': paper}, context_instance=RequestContext(request), mimetype='application/xml')