better filter management
authorcavaliet
Mon, 29 Sep 2014 12:43:40 +0200
changeset 343 12b6fc19d78f
parent 342 a0fa17c48236
child 344 1473ba25af1f
better filter management
src/hdalab/static/hdalab/css/profile.css
src/hdalab/templates/editorial/manage_renkans.html
src/hdalab/templates/profile_home.html
src/hdalab/templates/renkan_list.html
src/hdalab/views/profile.py
--- a/src/hdalab/static/hdalab/css/profile.css	Fri Sep 26 12:55:35 2014 +0200
+++ b/src/hdalab/static/hdalab/css/profile.css	Mon Sep 29 12:43:40 2014 +0200
@@ -25,6 +25,13 @@
 .inline{
 	display: inline-block;
 }
+#advanced-form{
+	border-bottom:1pt solid #555;
+	border-top:1pt solid #555;
+}
+#advanced-form p{
+    font-size: 12px;
+}
 
 /* editorialisation part */
 .hand_cursor {
--- a/src/hdalab/templates/editorial/manage_renkans.html	Fri Sep 26 12:55:35 2014 +0200
+++ b/src/hdalab/templates/editorial/manage_renkans.html	Mon Sep 29 12:43:40 2014 +0200
@@ -13,21 +13,49 @@
     <link rel="stylesheet" type="text/css" href="{% static 'hdalab/css/profile.css' %}" />
 {% endblock %}
 
+{% block js_import %}
+{{block.super}}
+<script src="{% static 'hdalab/lib/jquery-ui-1.10.4.min.js' %}"></script>
+<script type="text/javascript">
+    $(document).ready(function() {
+        $("#toggle-search").click(function(){
+            $("#advanced-form").toggle();
+        });
+        $(".date").datepicker({ dateFormat: 'yy-mm-dd' });
+    });
+</script>
+{% endblock %}
+
 {% block main_content %}
-    <p class="inline">{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}" >{% trans 'Previous' %}</a>{% endif %}
-       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Next' %}</a>{% endif %}</p>
-    <form class="inline"><p>{% if page.has_previous or page.has_next %} - {% endif %}{% trans 'Filter' %} : <input type="text" name="filter" value="{{ filter }}"/></p></form>
+    <p class="inline">{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}">{% trans 'Previous' %}</a>{% endif %}
+       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}">{% trans 'Next' %}</a>{% endif %}</p>
+    <form class="inline"><p>{% if page.has_previous or page.has_next %} - {% endif %}{% trans 'Filter' %} : <input type="text" name="title" value="{{ title }}"/> - <span class="hand_cursor" id="toggle-search">{% trans 'Advanced search' %}</span></p></form>
+    <form id="advanced-form" style="display: {% if startdate != '' or enddate != '' or username != '' or state != '' %}block{% else %}none{% endif %};">
+      <p>{% trans 'Title' %} : <input type="text" name="title" value="{{ title }}"/></p>
+      <p class="inline">{% trans 'Start date' %} : <input type="text" name="startdate" value="{{ startdate }}" class="date" /></p>
+      <p class="inline">{% trans 'End date' %} : <input type="text" name="enddate" value="{{ enddate }}" class="date" /></p>
+      <p>{% trans 'Username' %} : <input type="text" name="username" value="{{ username }}"/></p>
+      <p>{% trans 'State' %} : 
+        <select name="state">
+            <option value=""></option>
+            <option value="2"{% if state == '2' %} selected="selected"{% endif %}>{% trans 'Moderated' %}</option>
+            <option value="3"{% if state == '3' %} selected="selected"{% endif %}>{% trans 'Published' %}</option>
+            <option value="4"{% if state == '4' %} selected="selected"{% endif %}>{% trans 'Rejected' %}</option>
+        </select>
+      </p>
+      <p><input type="submit" value="{% trans 'Search' %}"/></p>
+    </form>
     <table id="rk-table">
       <thead>
         <tr class="border_bottom">
-          <th><a class="" href="?sort=title&order={% if sort_param == 'title' %}{{ opposite }}{% else %}asc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Title' %}</a>
+          <th><a class="" href="?sort=title&order={% if sort_param == 'title' %}{{ opposite }}{% else %}asc{% endif %}{{ filters }}">{% trans 'Title' %}</a>
               {% if sort_param == 'title' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
-          <th><a href="?sort=user&order={% if sort_param == 'user' %}{{ opposite }}{% else %}desc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'User' %}</a>
+          <th><a href="?sort=user&order={% if sort_param == 'user' %}{{ opposite }}{% else %}desc{% endif %}{{ filters }}">{% trans 'User' %}</a>
               {% if sort_param == 'user' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
-          <th><a href="?sort=date&order={% if sort_param == 'date' %}{{ opposite }}{% else %}desc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Modification date' %}</a>
+          <th><a href="?sort=date&order={% if sort_param == 'date' %}{{ opposite }}{% else %}desc{% endif %}{{ filters }}">{% trans 'Modification date' %}</a>
               {% if sort_param == 'date' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
           <th>{% trans 'Preview' %}</th>
-          <th><a href="?sort=state&order={% if sort_param == 'state' %}{{ opposite }}{% else %}asc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'State' %}</a>
+          <th><a href="?sort=state&order={% if sort_param == 'state' %}{{ opposite }}{% else %}asc{% endif %}{{ filters }}">{% trans 'State' %}</a>
               {% if sort_param == 'state' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
           <th>{% trans 'Actions' %}</th>
         </tr>
@@ -52,6 +80,6 @@
       {% endfor %}
       </tbody>
     </table>
-    <p>{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}" >{% trans 'Previous' %}</a>{% endif %}
-       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Next' %}</a>{% endif %}</p>
+    <p>{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}" >{% trans 'Previous' %}</a>{% endif %}
+       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}">{% trans 'Next' %}</a>{% endif %}</p>
 {% endblock %}
\ No newline at end of file
--- a/src/hdalab/templates/profile_home.html	Fri Sep 26 12:55:35 2014 +0200
+++ b/src/hdalab/templates/profile_home.html	Mon Sep 29 12:43:40 2014 +0200
@@ -20,18 +20,18 @@
     <p><a href="{% url 'renkan_new' %}" >Nouveau Renkan</a> - <a href="{% url 'auth_password_change' %}">Modification du mot de passe</a></p>
     <p>&nbsp;</p>
     <p>Mes renkans : </p>
-    <p class="inline">{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}" >{% trans 'Previous' %}</a>{% endif %}
-       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Next' %}</a>{% endif %}</p>
-    <form class="inline"><p>{% if page.has_previous or page.has_next %} - {% endif %}{% trans 'Filter' %} : <input type="text" name="filter" value="{{ filter }}"/></p></form>
+    <p class="inline">{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}" >{% trans 'Previous' %}</a>{% endif %}
+       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}">{% trans 'Next' %}</a>{% endif %}</p>
+    <form class="inline"><p>{% if page.has_previous or page.has_next %} - {% endif %}{% trans 'Filter' %} : <input type="text" name="title" value="{{ title }}"/></p></form>
     <table id="rk-table">
       <thead>
         <tr class="border_bottom">
-          <th><a href="?sort=title&order={% if sort_param == 'title' %}{{ opposite }}{% else %}asc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Title' %}</a>
+          <th><a href="?sort=title&order={% if sort_param == 'title' %}{{ opposite }}{% else %}asc{% endif %}{{ filters }}">{% trans 'Title' %}</a>
               {% if sort_param == 'title' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
-          <th><a href="?sort=date&order={% if sort_param == 'date' %}{{ opposite }}{% else %}desc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Modification date' %}</a>
+          <th><a href="?sort=date&order={% if sort_param == 'date' %}{{ opposite }}{% else %}desc{% endif %}{{ filters }}">{% trans 'Modification date' %}</a>
               {% if sort_param == 'date' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
           <th>{% trans 'Preview' %}</th>
-          <th><a href="?sort=state&order={% if sort_param == 'state' %}{{ opposite }}{% else %}asc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'State' %}</a>
+          <th><a href="?sort=state&order={% if sort_param == 'state' %}{{ opposite }}{% else %}asc{% endif %}{{ filters }}">{% trans 'State' %}</a>
               {% if sort_param == 'state' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
           <th>{% trans 'Actions' %}</th>
         </tr>
@@ -58,6 +58,6 @@
       {% endfor %}
       </tbody>
     </table>
-    <p>{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}" >{% trans 'Previous' %}</a>{% endif %}
-       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Next' %}</a>{% endif %}</p>
+    <p>{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}" >{% trans 'Previous' %}</a>{% endif %}
+       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}">{% trans 'Next' %}</a>{% endif %}</p>
 {% endblock %}
\ No newline at end of file
--- a/src/hdalab/templates/renkan_list.html	Fri Sep 26 12:55:35 2014 +0200
+++ b/src/hdalab/templates/renkan_list.html	Mon Sep 29 12:43:40 2014 +0200
@@ -15,16 +15,16 @@
 {% block renkans_actif %}actif{% endblock %}
 
 {% block main_content %}
-    <h2>Liste des renkans publiques</h2>
-    <p class="inline">{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}" >{% trans 'Previous' %}</a>{% endif %}
-       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Next' %}</a>{% endif %}</p>
-    <form class="inline"><p>{% if page.has_previous or page.has_next %} - {% endif %}{% trans 'Filter' %} : <input type="text" name="filter" value="{{ filter }}"/></p></form>
+    <h2>Liste des renkans publics</h2>
+    <p class="inline">{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}" >{% trans 'Previous' %}</a>{% endif %}
+       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}">{% trans 'Next' %}</a>{% endif %}</p>
+    <form class="inline"><p>{% if page.has_previous or page.has_next %} - {% endif %}{% trans 'Filter' %} : <input type="text" name="title" value="{{ title }}"/></p></form>
     <table id="rk-table">
       <thead>
         <tr class="border_bottom">
-          <th><a class="" href="?sort=title&order={% if sort_param == 'title' %}{{ opposite }}{% else %}asc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Title' %}</a>
+          <th><a class="" href="?sort=title&order={% if sort_param == 'title' %}{{ opposite }}{% else %}asc{% endif %}{{ filters }}">{% trans 'Title' %}</a>
               {% if sort_param == 'title' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
-          <th><a href="?sort=date&order={% if sort_param == 'date' %}{{ opposite }}{% else %}desc{% endif %}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Modification date' %}</a>
+          <th><a href="?sort=date&order={% if sort_param == 'date' %}{{ opposite }}{% else %}desc{% endif %}{{ filters }}">{% trans 'Modification date' %}</a>
               {% if sort_param == 'date' %}<span class="ui-icon {% if opposite == 'asc' %}ui-icon-triangle-1-s{% else %}ui-icon-triangle-1-n{% endif %}"></span>{% endif %}</th>
           <th>Preview</th><th>Actions</th></tr>
       </thead>
@@ -44,6 +44,6 @@
       {% endfor %}
       </tbody>
     </table>
-    <p>{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}" >{% trans 'Previous' %}</a>{% endif %}
-       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{% if filter|length > 0 %}&filter={{ filter }}{% endif %}">{% trans 'Next' %}</a>{% endif %}</p>
+    <p>{% if page.has_previous %}<a href="?page={{ page.previous_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}" >{% trans 'Previous' %}</a>{% endif %}
+       {% if page.has_previous and page.has_next %} - {% endif %}{% if page.has_next %}<a href="?page={{ page.next_page_number }}&sort={{ sort_param }}&order={{ order_param }}{{ filters }}">{% trans 'Next' %}</a>{% endif %}</p>
 {% endblock %}
\ No newline at end of file
--- a/src/hdalab/views/profile.py	Fri Sep 26 12:55:35 2014 +0200
+++ b/src/hdalab/views/profile.py	Mon Sep 29 12:43:40 2014 +0200
@@ -45,9 +45,33 @@
     
     def update_context(self, context, renkan_queryset):
         
-        filter_title = self.request.GET.get("filter", "")
+        filters = ""
+        filter_title = self.request.GET.get("title", "")
         if(len(filter_title)>0):
             renkan_queryset = renkan_queryset.filter(renkan__title__icontains=filter_title)
+            filters += "&title=" + filter_title
+        filter_username = self.request.GET.get("username", "")
+        if(len(filter_username)>0):
+            renkan_queryset = renkan_queryset.filter(renkan__owner__username=filter_username)
+            filters += "&username=" + filter_username
+        filter_state = self.request.GET.get("state", "")
+        if(len(filter_state)>0):
+            try:
+                filter_state = int(filter_state)
+            except:
+                pass
+            renkan_queryset = renkan_queryset.filter(state=filter_state)
+            filter_state = str(filter_state)
+            filters += "&state=" + filter_state
+        filter_startdate = self.request.GET.get("startdate", "")
+        if filter_startdate!="":
+            renkan_queryset = renkan_queryset.filter(renkan__modification_date__gt=filter_startdate)
+            filters += "&startdate=" + filter_startdate
+        filter_enddate = self.request.GET.get("enddate", "")
+        if filter_enddate!="":
+            renkan_queryset = renkan_queryset.filter(renkan__modification_date__lt=filter_enddate + " 23:59:59")
+            filters += "&enddate=" + filter_enddate
+        
         
         sort_param = self.request.GET.get('sort', "date")
         order_param = self.request.GET.get('order', "desc")
@@ -69,7 +93,9 @@
         except EmptyPage:
             page = p.page(p.num_pages)
         
-        context.update({"page": page, "sort_param":sort_param, "order_param":order_param, "opposite":opposite, "filter":filter_title})
+        context.update({"page": page, "sort_param":sort_param, "order_param":order_param, "opposite":opposite, 
+                        "filters":filters, "title": filter_title, "username": filter_username, "state": filter_state,
+                        "startdate":filter_startdate, "enddate":filter_enddate})
         
         return context