diff -r 0931f368cb9a -r 316a0101512e src/hp/views.py --- a/src/hp/views.py Wed Nov 14 18:47:17 2012 +0100 +++ b/src/hp/views.py Thu Nov 15 04:11:59 2012 +0100 @@ -5,10 +5,12 @@ @author: ymh ''' from django.conf import settings +from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage +from django.http import HttpResponse from django.shortcuts import render_to_response from django.template.context import RequestContext -from django.http import HttpResponse from hp.models import VideoKCRel +from hp.utils import get_all_objects import logging import requests import urlparse @@ -18,20 +20,28 @@ def all_videos(request): - #get all videos - #render - url = settings.LDT_API_URL + "contents/" - #limit=20&offset=20 - r = requests.get(url) - - - - results = r.json - - for content in results.get('objects', []): + url = settings.LDT_API_URL + "contents/?limit=" + str(settings.LDT_MAX_FETCH) + + #pagination TODO : implement a lazy loader + contents = get_all_objects(url, 'front_project') + for content in contents: url_parts = urlparse.urlparse(content.get('image','')) if not url_parts.netloc: content['image'] = settings.LDT_DOMAIN + content.get('image','') + + paginator = Paginator(contents, settings.PER_PAGE, 0, True) + + page = request.GET.get('page',1) + if page == 'last': + page = paginator.num_pages + try: + results = paginator.page(page) + except PageNotAnInteger: + # If page is not an integer, deliver first page. + results = paginator.page(1) + except EmptyPage: + # If page is out of range (e.g. 9999), deliver last page of results. + results = paginator.page(paginator.num_pages) return render_to_response('hp/all_videos.html',{'results':results}, context_instance=RequestContext(request))