update ldt + add search on videos
authorymh <ymh.work@gmail.com>
Mon, 26 Nov 2012 17:01:05 +0100
changeset 83 07c9aa7de765
parent 82 fa141523769a
child 84 4507168941a4
update ldt + add search on videos
src/hp/forms.py
src/hp/templates/hp/all_videos.html
src/hp/utils.py
src/hp/views.py
virtualenv/res/src/ldt-1.33.tar.gz
--- a/src/hp/forms.py	Sat Nov 24 15:21:04 2012 +0100
+++ b/src/hp/forms.py	Mon Nov 26 17:01:05 2012 +0100
@@ -21,12 +21,12 @@
     def __init__(self, *args, **kwargs):
         super(VideoKCRelForm, self).__init__(*args, **kwargs)
         
-        url = settings.LDT_API_URL + "contents/?limit=" + str(settings.LDT_MAX_FETCH)
-        contents = get_all_objects(url, 'front_project')
+        url = settings.LDT_API_URL + "contents/"
+        contents = get_all_objects(url, {'limit':settings.LDT_MAX_FETCH}, 'front_project')
         self.fields['iri_id'].widget.choices = [(content['iri_id'], content['title']) for content in contents]
         
-        url = settings.LDT_API_URL + "projects/?state=2&limit=" + str(settings.LDT_MAX_FETCH)
-        projects = get_all_objects(url, None)
+        url = settings.LDT_API_URL + "projects/"
+        projects = get_all_objects(url, {'state': 2, 'limit': settings.LDT_MAX_FETCH}, None)
         logger.debug("projects " + repr(projects))
         values = [(None, "-----")]
         values.extend([(project['ldt_id'], project['title']) for project in projects])
--- a/src/hp/templates/hp/all_videos.html	Sat Nov 24 15:21:04 2012 +0100
+++ b/src/hp/templates/hp/all_videos.html	Mon Nov 26 17:01:05 2012 +0100
@@ -19,7 +19,7 @@
 <!-- all videos -->
 
 <div class="main row">
-    <h2>{% trans 'All videos' %}</h2>
+    <h2>{% if search %}{% trans 'Results for:' %}&nbsp;{{search}}{% else %}{% trans 'All videos' %}{% endif %}</h2>
     <div class="row">
     {% for content in results %}
         <div class="video">
@@ -45,7 +45,7 @@
     <div class="pagination">
         <span class="step-links">
         {% if results.has_previous %}
-            <a href="{% url hp.views.all_videos %}">&lt;&lt;</a> <a href="{% url hp.views.all_videos %}?page={{ results.previous_page_number }}">&lt;</a>
+            <a href="{% url hp.views.all_videos %}{{search_param_first}}">&lt;&lt;</a> <a href="{% url hp.views.all_videos %}?page={{ results.previous_page_number }}{{search_param}}">&lt;</a>
         {% else %}
             {{"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"|safe}}
         {% endif %}
@@ -53,7 +53,7 @@
             {{ results.number }}/{{ results.paginator.num_pages }}
         </span>
         {% if results.has_next %}
-            <a href="{% url hp.views.all_videos %}?page={{ results.next_page_number }}">&gt;</a> <a href="{% url hp.views.all_videos %}?page=last">&gt;&gt;</a>
+            <a href="{% url hp.views.all_videos %}?page={{ results.next_page_number }}{{search_param}}">&gt;</a> <a href="{% url hp.views.all_videos %}?page=last{{search_param}}">&gt;&gt;</a>
         {% else %}
             {{"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"|safe}}
         {% endif %}
--- a/src/hp/utils.py	Sat Nov 24 15:21:04 2012 +0100
+++ b/src/hp/utils.py	Mon Nov 26 17:01:05 2012 +0100
@@ -23,11 +23,11 @@
         return pr.geturl()
     
 
-def get_all_objects(res_url, field_filter):
+def get_all_objects(res_url, request_params, field_filter):
     objects = []
     url = res_url
     while url:        
-        r = requests.get(url)
+        r = requests.get(url, params=request_params)
         if r.status_code != requests.codes.ok: #@UndefinedVariable
             logger.error("Error when requesting objects " + repr(r.status_code) + " : " + repr(r.text))
             break
--- a/src/hp/views.py	Sat Nov 24 15:21:04 2012 +0100
+++ b/src/hp/views.py	Mon Nov 26 17:01:05 2012 +0100
@@ -20,10 +20,18 @@
 
 def all_videos(request):
     
-    url = settings.LDT_API_URL + "contents/?limit=" + str(settings.LDT_MAX_FETCH)
+    url = "%scontents/" % (settings.LDT_API_URL)
+    
+    request_params = {'limit' : settings.LDT_MAX_FETCH, 'order_by': 'title'}
+    
+    search = request.REQUEST.get("search", None)
+    if search:
+        search = search.strip()
+        request_params['title__icontains'] = search
 
     #pagination TODO : implement a lazy loader     
-    contents = get_all_objects(url, 'front_project')
+    contents = get_all_objects(url, request_params, 'front_project')
+
     for content in contents:
         url_parts = urlparse.urlparse(content.get('image',''))
         if not url_parts.netloc:
@@ -42,8 +50,15 @@
     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))
+    
+    if search:
+        search_param = "&search=%s" % search
+        search_param_first = "?search=%s" % search
+    else:
+        search_param = ""
+        search_param_first = ""
+    
+    return render_to_response('hp/all_videos.html',{'results':results, 'search': search, 'search_param': search_param, 'search_param_first': search_param_first}, context_instance=RequestContext(request))
     
 
 def show_video_details(request, content_id):
Binary file virtualenv/res/src/ldt-1.33.tar.gz has changed