src/hp/views.py
changeset 45 316a0101512e
parent 44 0931f368cb9a
child 60 4a0bfe0002b1
--- 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))