From 334650b53e2b15531d48c0b4aedd032e093f82c5 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@bioforsk.no>
Date: Wed, 18 Feb 2015 14:06:22 +0100
Subject: [PATCH] Added date filter for messages

---
 messages/forms.py                      |  5 +++++
 messages/models.py                     | 12 ++++++++----
 messages/templates/messages/index.html | 18 ++++++++++++++++--
 messages/views.py                      | 18 +++++++++++++++++-
 4 files changed, 46 insertions(+), 7 deletions(-)
 create mode 100644 messages/forms.py

diff --git a/messages/forms.py b/messages/forms.py
new file mode 100644
index 00000000..995d3f43
--- /dev/null
+++ b/messages/forms.py
@@ -0,0 +1,5 @@
+from django import forms
+
+class MessagePublishedDateFilterForm(forms.Form):
+    publishedFrom = forms.DateField(required=False)
+    publishedTo = forms.DateField(required=False)
\ No newline at end of file
diff --git a/messages/models.py b/messages/models.py
index e31c52f6..fca54dec 100644
--- a/messages/models.py
+++ b/messages/models.py
@@ -106,17 +106,21 @@ class Message:
         return messages
     
     @staticmethod
-    def get_messages(current_language=settings.VIPSLOGIC_LANGUAGE_CODE):
+    def get_messages(current_language=settings.VIPSLOGIC_LANGUAGE_CODE, publishedFrom=None, publishedTo=None):
         messages = []
         
-        for item in Message.get_messages_as_json():
+        for item in Message.get_messages_as_json(publishedFrom, publishedTo):
             message = Message.get_instance_from_dict(item, current_language)
             messages.append(message)
         return messages
     
     @staticmethod
-    def get_messages_as_json():
-        request_result = requests.get("http://%s/rest/message/list/%s" % (settings.VIPSLOGIC_SERVER_NAME,settings.VIPS_ORGANIZATION_ID))
+    def get_messages_as_json(publishedFrom=None, publishedTo=None):
+        payload = {"publishedFrom":publishedFrom, "publishedTo":publishedTo}
+        request_result = requests.get(
+                                      "http://%s/rest/message/list/%s" % (settings.VIPSLOGIC_SERVER_NAME,settings.VIPS_ORGANIZATION_ID), 
+                                      params=payload
+                                      )
         return request_result.json()
     
     @staticmethod
diff --git a/messages/templates/messages/index.html b/messages/templates/messages/index.html
index 26991c1e..cf63d3d5 100644
--- a/messages/templates/messages/index.html
+++ b/messages/templates/messages/index.html
@@ -4,13 +4,27 @@
 {% block content %}
 <h1>{% trans "Messages" %}</h1>
 <div class="row">
-	<div class="col-xs-12">
+	<div class="col-xs-6">
 		<div class="input-group">
 	      	<div class="input-group-addon"><img src="{% static "css/icons/ic_action_search.png" %}" alt="Search icon"/></div>
 			<input class="form-control" type="text" placeholder="{% trans "Search" %}" oninput="search(this);"/>
 		</div>
-		
 	</div>
+	<div class="col-xs-6">
+		<form class="form-inline" method="get" action="/messages">
+			<div class="form-group">
+				{{form.publishedFrom.errors}}
+				<input class="form-control" type="date" name="{{form.publishedFrom.html_name}}" value="{{form.publishedFrom.value}}" placeholder="{% trans "From" %}"/>
+			</div>
+			-
+			<div class="form-group">
+				{{form.publishedTo.errors}}
+				<input class="form-control" type="date" name="{{form.publishedTo.html_name}}" value="{{form.publishedTo.value}}" placeholder="{% trans "To" %}"/>
+			</div>
+			<button type="submit" class="btn btn-default">{% trans "Submit" %}</button>
+		</form>
+	</div>
+
 </div>
 <div class="table-responsive">
 	<table id="resultTable" class="table table-striped">
diff --git a/messages/views.py b/messages/views.py
index 36cb0618..2c62a730 100644
--- a/messages/views.py
+++ b/messages/views.py
@@ -20,10 +20,26 @@ from django.shortcuts import render
 from django.utils import translation
 
 from messages.models import Message
+from messages.forms import MessagePublishedDateFilterForm
 
 def index(request):
+    messages = None
+    form = MessagePublishedDateFilterForm(request.GET)
+    if form == None:
+        form = MessagePublishedDateFilterForm() 
+    elif form.is_valid():
+        messages = Message.get_messages(
+                              translation.get_language(), 
+                              form.cleaned_data["publishedFrom"], 
+                              form.cleaned_data["publishedTo"]
+                              )
+    else:
+        messages = Message.get_messages(translation.get_language())
+        
+        
     context = {
-               'messages' : Message.get_messages(translation.get_language()),
+               'messages' : messages,
+               'form' : form
                }
     return render(request, 'messages/index.html', context)
 
-- 
GitLab