add arrows and search management with pictures.
authorcavaliet
Tue, 02 Jul 2013 13:16:00 +0200
changeset 212 2cca82dd0e79
parent 211 35aca8206b40
child 213 6655617f3d92
add arrows and search management with pictures.
src/egonomy/templates/egonomy_annotate_picture.html
src/egonomy/templates/egonomy_create_fragment.html
src/egonomy/templates/egonomy_view_fragment.html
src/egonomy/templates/partial/image_in_list.html
src/egonomy/urls.py
src/egonomy/views.py
--- a/src/egonomy/templates/egonomy_annotate_picture.html	Mon Jul 01 17:38:34 2013 +0200
+++ b/src/egonomy/templates/egonomy_annotate_picture.html	Tue Jul 02 13:16:00 2013 +0200
@@ -5,14 +5,20 @@
 
 {% block title %}{% trans "Annotate a picture" %}{% endblock %}
 
+{% block css_page %}
+    <link rel="stylesheet" href="{% static 'egonomy/css/slideshow.css' %}" />
+{% endblock %}
+
 {% block content %}
             <div class="title-page">
                 <h2>{{ img.metadata.titre|default:_("No title") }}</h2>
             </div>
             <div class="bar-tools clearfix">
                 <ul class="clearfix left">
-                    <li><a class="go-to mosaic" href="#"></a></li>
-                    <li><a class="go-to search" href="#"></a></li>
+                    <!--li><a class="go-to mosaic" href="#"></a></li-->
+                    {% if search %}
+                    <li><a class="go-to search" href="{% url 'all_pictures' %}?search={{ search }}"></a></li>
+                    {% endif %}
                 </ul>
                 <ul class="clearfix">
                     <li>
@@ -53,12 +59,16 @@
                         {% endif %}
                         {% endwith %}
                     </div>
-                    <!--div class="arrow-wrap left-arrow">
-                        <a class="arrow" href="#"></a>
+                  {% if search %}
+                    {% if index_search|add:1 > 1 %}{# i know it's weird but "if index_search > 0" doesn't work #}
+                    <div class="arrow-wrap left-arrow">
+                        <a class="arrow" href="{% url 'picture_by_search' %}?search={{ search }}&index_search={{ index_search|add:-1 }}"></a>
                     </div>
+                    {% endif %}
                     <div class="arrow-wrap right-arrow">
-                        <a class="arrow" href="#"></a>
-                    </div-->
+                        <a class="arrow" href="{% url 'picture_by_search' %}?search={{ search }}&index_search={{ index_search|add:1 }}"></a>
+                    </div>
+                  {% endif %}
                     <ul class="share">
                         <li><a title="Partager sur Twitter" href="#" class="tool twitter"></a></li>
                         <li><a title="Partager sur Facebook" href="#" class="tool facebook"></a></li>
@@ -94,7 +104,7 @@
                     <h3>{% trans "Keywords" %} :</h3>
                     <ul class="list-key-search list-keywords clearfix">
                         {% for t in img.metadata.tag_list %}
-                        {% if t != "" %}<li><a class="box-shadow-2" href="#">{{ t }}</a></li>{% endif %}
+                        {% if t != "" %}<li><a class="box-shadow-2" href='{% url "all_pictures" %}?field=all&search="{{ t }}"'>{{ t }}</a></li>{% endif %}
                         {% endfor %}
                     </ul>
                 </div>
--- a/src/egonomy/templates/egonomy_create_fragment.html	Mon Jul 01 17:38:34 2013 +0200
+++ b/src/egonomy/templates/egonomy_create_fragment.html	Tue Jul 02 13:16:00 2013 +0200
@@ -14,10 +14,6 @@
                 <h2><a href="{% url 'annotate_picture' image_id=img.id %}">{{ img.metadata.titre|default:_("No title") }}</a> <span class="fs-normal">/ {% if frg_to_modify %}{{ frg_data.title }}{% else %}{% trans 'New fragment' %}{% endif %}</span></h2>
             </div>
             <div class="bar-tools clearfix">
-                <ul class="clearfix left">
-                    <li><a class="go-to mosaic" href="#"></a></li>
-                    <li><a class="go-to search" href="#"></a></li>
-                </ul>
                 <ul class="clearfix">
                     <li><a title="{% trans 'Erase the drawing' %}" href="#" class="fs-15 clear-fragment">&times;</a></li>
                     <li><a title="{% trans 'Back to the original drawing' %}" href="#" class="fs-15 reset-fragment">↺</a></li>
--- a/src/egonomy/templates/egonomy_view_fragment.html	Mon Jul 01 17:38:34 2013 +0200
+++ b/src/egonomy/templates/egonomy_view_fragment.html	Tue Jul 02 13:16:00 2013 +0200
@@ -11,8 +11,10 @@
             </div>
             <div class="bar-tools clearfix">
                 <ul class="clearfix left">
-                    <li><a class="go-to mosaic" href="#"></a></li>
-                    <li><a class="go-to search" href="#"></a></li>
+                    <!--li><a class="go-to mosaic" href="#"></a></li-->
+                    {% if search %}
+                    <li><a class="go-to search" href="{% url 'all_fragments' %}?search={{ search }}"></a></li>
+                    {% endif %}
                 </ul>
                 <ul class="clearfix">
                     {% ifequal user fragment.author %}
@@ -139,7 +141,7 @@
                                 <td>
                                     <ul class="list-key-search no-before list-keywords clearfix">
                                       {% for t in fragment.tag_list %}
-	                                    {% if t != "" %}<li><a data-tag="{{ t }}" class="box-shadow-2" href="#">{{ t }}</a></li>{% endif %}
+	                                    {% if t != "" %}<li><a data-tag="{{ t }}" class="box-shadow-2" href='{% url "all_fragments" %}?field=all&search="{{ t }}"'>{{ t }}</a></li>{% endif %}
 	                                  {% endfor %}
                                     </ul>
                                 </td>
--- a/src/egonomy/templates/partial/image_in_list.html	Mon Jul 01 17:38:34 2013 +0200
+++ b/src/egonomy/templates/partial/image_in_list.html	Tue Jul 02 13:16:00 2013 +0200
@@ -2,7 +2,7 @@
 {% load i18n %}
 {% load thumbnail %}
 {# we suppose here that "img" has been defined #}
-<a href="{% url 'annotate_picture' image_id=img.id %}">
+<a href="{% url 'annotate_picture' image_id=img.id %}{% if search %}?search={{ search }}&index_search={{ offset_search|add:forloop.counter0 }}{% endif %}">
 <div class="center-image">
 {% with img.info.image_file as image %}
 {% if image %}
--- a/src/egonomy/urls.py	Mon Jul 01 17:38:34 2013 +0200
+++ b/src/egonomy/urls.py	Tue Jul 02 13:16:00 2013 +0200
@@ -26,6 +26,7 @@
     url(r'^viewcollection/(?P<collection_pk>.*)/$', 'egonomy.views.view_collection', name='view_collection'),
     url(r'^additem/$', 'egonomy.views.add_item_to_collection', name='add_item'),
     url(r'^embedslideshow/(?P<collection_pk>.*)/$', 'egonomy.views.embed_slideshow', name='embed_slideshow'),
+    url(r'^picturebysearch/$', 'egonomy.views.picture_by_search', name='picture_by_search'),
 
     # Uncomment the admin/doc line below to enable admin documentation:
     url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
--- a/src/egonomy/views.py	Mon Jul 01 17:38:34 2013 +0200
+++ b/src/egonomy/views.py	Tue Jul 02 13:16:00 2013 +0200
@@ -52,8 +52,13 @@
     if len(frg_list)>0:
         last_frg = frg_list[0]
     
+    # If we display the picture after a search, we propose the previous and next picture
+    search = request.GET.get("search") or None
+    index_search = request.GET.get("index_search") or None
+    
     return render_to_response("egonomy_annotate_picture.html",
                               {'img': img, 'fragment_list': frg_list, 'last_frg':last_frg,
+                               'search': search, 'index_search': index_search,
                                'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
@@ -153,15 +158,47 @@
         results = paginator.page(paginator.num_pages)
     
     url_pagination = reverse("all_pictures") + "?limit=" + str(nb)
+    offset_search = None
     if search:
         url_pagination = url_pagination + "&search=" + search
+        offset_search = int(nb) * (cur_page_nb-1)
 
     return render_to_response("egonomy_all_pictures.html",
-                              {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination,
+                              {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, 
+                               "url_pagination":url_pagination, "offset_search":offset_search,
                                'current_user_collection_list':current_user_collection_list(request)},
                               context_instance=RequestContext(request))
 
 
+def picture_by_search(request):
+    
+    # We get the picture in the context of a search
+    index_search = request.GET.get("index_search") or None
+    if not index_search:
+        redirect("home")
+    else:
+        index_search = int(index_search)
+
+    search = None
+    if "search" in request.GET:
+        search = request.GET["search"]
+        field = "all"
+        if "field" in request.GET:
+            field = request.GET["field"]
+    
+    img_list = Image.objects.select_related('info', 'metadata')
+    if search:
+        if not field or field == 'all':
+            field = 'text'
+        qp = QueryParser(field)
+        res = ModelRelatedSearchQuerySet(model=Image).filter(qp.parse(search)).models(ImageMetadata).load_all_queryset(Image, img_list).load_all()
+        img = res[index_search]
+        return redirect(reverse("annotate_picture", args=[img.pk]) + "?search=" + search + "&index_search=" + str(index_search))
+    else:
+        redirect("home")
+
+
+
 def all_fragments(request):
         
     # Get the cur_page_nb number parameter if possible