possibility to search by group of tagged medias.
authorcavaliet
Wed, 07 Mar 2012 12:43:58 +0100
changeset 599 5207abea900d
parent 598 acef0a114a73
child 600 12b45313f9c9
possibility to search by group of tagged medias.
src/ldt/ldt/ldt_utils/forms.py
src/ldt/ldt/ldt_utils/templates/front/front_base.html
src/ldt/ldt/ldt_utils/templates/front/front_search_results.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/published_projects.html
src/ldt/ldt/ldt_utils/views/front.py
src/ldt/ldt/ldt_utils/views/workspace.py
--- a/src/ldt/ldt/ldt_utils/forms.py	Tue Mar 06 13:20:22 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/forms.py	Wed Mar 07 12:43:58 2012 +0100
@@ -33,6 +33,7 @@
     field = forms.ChoiceField([(u"all", _("all")), (u"title", _("title")), (u"abstract", _("resume")), (u"tags", _("tags"))], label=_("Fields"))
     ldt_pres = forms.BooleanField(required=False, initial=True, label=_("Display the results in Lignes De Temps"))
     page = forms.IntegerField(required=False, widget=forms.HiddenInput())
+    content_tag = forms.CharField(label=_("Content Tag"), required=False, widget=forms.HiddenInput())
 
 class AddProjectForm (ShareForm):
     title = forms.CharField(widget=forms.TextInput(attrs={'class':'inputbox required'}))
--- a/src/ldt/ldt/ldt_utils/templates/front/front_base.html	Tue Mar 06 13:20:22 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_base.html	Wed Mar 07 12:43:58 2012 +0100
@@ -48,6 +48,7 @@
                 <!--input id="search_text" name="q" value="" /-->
                 <input id="id_search" type="text" name="search">
                 <input type="hidden" value="all" name="field">
+                {% if tag_label %}<input type="hidden" value="{{tag_label}}" name="content_tag">{% endif %}
                 <input id="search_submit" class="search_invalid" type="submit" value="{% trans 'Search' %}" disabled="true"/>
             </form>
             
--- a/src/ldt/ldt/ldt_utils/templates/front/front_search_results.html	Tue Mar 06 13:20:22 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/front/front_search_results.html	Wed Mar 07 12:43:58 2012 +0100
@@ -50,7 +50,12 @@
 {{ msg }}
 {% else %}
   {% ifequal nb_results 0 %}
-    {% blocktrans %} No results for <b>{{ search }}</b>.{% endblocktrans %}
+    {% if tag_label %}
+      {% blocktrans %} No results for <b>{{ search }}</b> with the medias tagged <span class="pink">{{tag_label}}</span>{% endblocktrans %}
+      <br/><a href="{% url ldt.ldt_utils.views.front.search_index %}?search={{search}}&field={{field}}">{% trans "See for all medias" %}</a>
+    {% else %}
+      {% blocktrans %} No results for <b>{{ search }}</b>.{% endblocktrans %}
+    {% endif %}
   {% else %}
 <!-- TABLE POUR ALIGNER À LA VERTICALE -->
     <table id="tbl_rech">
@@ -62,7 +67,13 @@
             <li id="li_haut_resultats">
                 <ul class="floatlist" id="ul_haut_resultats">
                     <li id="title_resultats">
-                        <h2>{% trans "Search results for " %} <b> {{ search }}</b></h2>
+                      <h2>
+                        {% if tag_label %}
+                          <a href="{% url ldt.ldt_utils.views.front.search_index %}?search={{search}}&field={{field}}">{% trans "Search results for " %} <b> {{ search }}</b></a><span class="pink"> &gt; {{tag_label}}</span>
+                        {% else %}
+                          {% trans "Search results for " %} <b> {{ search }}</b>
+                        {% endif %}
+                      </h2>
                     </li>
                     <li id="li_nb_resultats">
                         <p id="p_nb_resultats">{{ nb_results }} {% trans "Result" %}{{ nb_results|pluralize }}</p>
@@ -122,7 +133,7 @@
         <li id="result_pagination">
             <p>
             {% if results.has_previous %}
-	            <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{ results.previous_page_number }}&search={{search}}&field={{field}}" title="{% trans 'previous' %}">{% trans "previous" %}</a>
+	            <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{ results.previous_page_number }}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}" title="{% trans 'previous' %}">{% trans "previous" %}</a>
 	            .
 	        {% endif %}
 	        {% if results.paginator.num_pages > 1 %}
@@ -132,7 +143,7 @@
 	                {% if i|add:'1' == results.number %}
 	                <span class="pink">{{i|add:'1'}}</span>
 	                {% else %}
-	                <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{i|add:'1'}}&search={{search}}&field={{field}}">{{i|add:'1'}}</a>
+	                <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{i|add:'1'}}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}">{{i|add:'1'}}</a>
 	                {% endif %}
 	                {% if i|add:'1' < results.paginator.num_pages and 1 < results.paginator.num_pages %}
                     {% endif %}
@@ -142,7 +153,7 @@
 	        {% endif %}
 	        {% if results.has_next %}
 	           
-	            <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{ results.next_page_number }}&search={{search}}&field={{field}}" title="{% trans 'next' %}">{% trans "next" %}</a>
+	            <a class="blue under" href="{% url ldt.ldt_utils.views.front.search_index %}?page={{ results.next_page_number }}&search={{search}}&field={{field}}{% if tag_label %}&content_tag={{tag_label}}{% endif %}" title="{% trans 'next' %}">{% trans "next" %}</a>
 	        {% endif %}
             </p>
         </li>
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/published_projects.html	Tue Mar 06 13:20:22 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/published_projects.html	Wed Mar 07 12:43:58 2012 +0100
@@ -53,10 +53,9 @@
 			<div class="span-8 projectscontentstitle" >{% trans "Search" %}</div>
 		</div>
 		<div class="span-12 last projectscontentsdiv" id="autre">
-		<form method="post" id="my_form"
+		<form method="get" id="my_form"
 			action="{% url ldt.ldt_utils.views.workspace.search_index %}"
 			accept-charset="utf-8">
-		{% csrf_token %}
 		<table>
 			{{ form.as_table }}
 		</table>
--- a/src/ldt/ldt/ldt_utils/views/front.py	Tue Mar 06 13:20:22 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/front.py	Wed Mar 07 12:43:58 2012 +0100
@@ -127,15 +127,21 @@
     results = []
     search = ''
     field = 'all'
+    content_tag = 'all'
     
     sform = SearchForm(request.GET)
     if sform.is_valid():
         search = sform.cleaned_data["search"]
         field = sform.cleaned_data["field"]
         page = sform.cleaned_data["page"] or 1
-        results, nb = get_search_results(request, search, field, page)            
+        # If asked, we filter the request with only the contents tagged with content_tag
+        content_tag = sform.cleaned_data["content_tag"]
+        content_list = None
+        if content_tag is not None and content_tag != "" :
+            content_list = TaggedItem.objects.get_by_model(Content.objects.all(), '"'+content_tag+'"')
+        results, nb = get_search_results(request, search, field, page, content_list)
 
-    return render_to_response('front/front_search_results.html', {'results': results, 'nb_results' : nb, 'search' : search, 'field': field, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request))
+    return render_to_response('front/front_search_results.html', {'results': results, 'nb_results' : nb, 'search' : search, 'field': field, 'tag_label':content_tag, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request))
 
 
 def get_content_tags(limit=None, steps=10):
--- a/src/ldt/ldt/ldt_utils/views/workspace.py	Tue Mar 06 13:20:22 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/workspace.py	Wed Mar 07 12:43:58 2012 +0100
@@ -175,8 +175,8 @@
     return render_to_response('ldt/ldt_utils/search_results.html', {'results': results, 'nb_results' : nb, 'search' : search, 'field': field, 'LDT_MEDIA_PREFIX': settings.LDT_MEDIA_PREFIX, 'colorurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/color.xml', 'i18nurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/pkg/i18n', 'language': language_code, 'baseurl': settings.LDT_MEDIA_PREFIX + 'swf/ldt/'}, context_instance=RequestContext(request))
         
  
-def get_search_results(request, search, field, page):
-    results = get_results_with_context(field, search) 
+def get_search_results(request, search, field, page, content_list=None):
+    results = get_results_with_context(field, search, content_list)
             
     all_segments = Segment.objects.filter(element_id__in=[e['element_id'] for e in results])
     all_projects = Project.objects.filter(ldt_id__in=[e['project_id'] for e in results], state=2)