Repository: zestedesavoir/zds-site

Issue:
Les derniers sujets suivis cette semaine ne le sont pas forcément.
A l'heure ou je poste cette issue, on est lundi et dans mes sujets suivis j'ai des sujets suivis de : 
- aujourd'hui : normal
- hier (dimanche) : normal
- cette semaine : il y'a un problème de vocable ici. Car "cette semaine" à commencée en fait aujourd'hui. Le code lui veut plutôt parler des "7 derniers jours".

Donc j'ignore la bonne façon de faire ici ? renommer le "cette semaine" ou modifier le comportement pour n'avoir que ce qui s'est passé cette semaine ?

Mais dans tout les cas l'affichage ne correspond pas à la réalité. Au vu du code, le problème est aussi présent pour "Ce mois" qui devrait plutôt s'appeler "Les 30 derniers jours" pour être cohérent avec la réalité.



Discussion:
Le renommage me semble moins casse tête, d'autant que je vois pas vraiment l'intérêt de pas avoir sa liste du mois dernier qui disparait le premier :)

+1 pour le renommage. Du coup ça devient normalement « facile ».

Et pour « Cette année » je mets quoi ? « Les 365 derniers jours » c'est pas génial ... (et en plus c'est 360)

Y'a la place pour des phrases comme « 1 semaine glissante », « 1 mois
glissant », « 1 an glissant » ?

2015-11-24 11:32 GMT+01:00 Laville Augustin notifications@github.com:

> Et pour « Cette année » je mets quoi ? « Les 365 derniers jours » c'est
> pas génial ...
> 
> —
> Reply to this email directly or view it on GitHub
> https://github.com/zestedesavoir/zds-site/issues/3172#issuecomment-159223877
> .

Oui mais c'est pas génial je trouve. Après c'est subjectif !

Le code est comme ça : 

``` python
const = {1: "Aujourd'hui", 2: "Hier", 3: "Cette semaine", 4: "Ce mois-ci", 5: "Cette année"}
```

Ou alors on remplace le dernier item par « plus ancien ».

Le 24 novembre 2015 11:38, Laville Augustin notifications@github.com a
écrit :

> Oui mais c'est pas génial je trouve. Après c'est subjectif !
> 
> Le code est comme ça :
> 
> const = {1: "Aujourd'hui", 2: "Hier", 3: "Cette semaine", 4: "Ce mois-ci", 5: "Cette année"}
> 
> —
> Reply to this email directly or view it on GitHub
> https://github.com/zestedesavoir/zds-site/issues/3172#issuecomment-159225264
> .


Resolving patch:
diff --git a/zds/utils/templatetags/interventions.py b/zds/utils/templatetags/interventions.py
--- a/zds/utils/templatetags/interventions.py
+++ b/zds/utils/templatetags/interventions.py
@@ -5,10 +5,10 @@
 
 from django import template
 from django.db.models import F
+from django.utils.translation import ugettext_lazy as _
 
 from zds.forum.models import TopicFollowed, never_read as never_read_topic, Post, TopicRead
 from zds.mp.models import PrivateTopic
-
 from zds.utils.models import Alert
 from zds.tutorialv2.models.models_database import ContentRead, ContentReaction
 
@@ -25,8 +25,19 @@ def is_read(topic):
 
 @register.filter('humane_delta')
 def humane_delta(value):
-    # mapping between label day and key
-    const = {1: "Aujourd'hui", 2: "Hier", 3: "Cette semaine", 4: "Ce mois-ci", 5: "Cette année"}
+    """
+    Mapping between label day and key
+
+    :param int value:
+    :return: string
+    """
+    const = {
+        1: _("Aujourd'hui"),
+        2: _("Hier"),
+        3: _("Les 7 derniers jours"),
+        4: _("Les 30 derniers jours"),
+        5: _("Plus ancien")
+    }
 
     return const[value]
 


Test patch:
diff --git a/zds/utils/templatetags/tests/tests_interventions.py b/zds/utils/templatetags/tests/tests_interventions.py
--- a/zds/utils/templatetags/tests/tests_interventions.py
+++ b/zds/utils/templatetags/tests/tests_interventions.py
@@ -3,6 +3,7 @@
 from datetime import datetime, timedelta
 
 from django.core.urlresolvers import reverse
+from django.template import Context, Template
 from django.test import TestCase
 
 from zds.forum.factories import CategoryFactory, ForumFactory, PostFactory, TopicFactory
@@ -32,6 +33,16 @@ def setUp(self):
             author=self.author.user,
             position_in_topic=1)
 
+        # humane_delta test
+        periods = ((1, 0), (2, 1), (3, 7), (4, 30), (5, 360))
+        cont = dict()
+        cont['date_today'] = periods[0][0]
+        cont['date_yesterday'] = periods[1][0]
+        cont['date_last_week'] = periods[2][0]
+        cont['date_last_month'] = periods[3][0]
+        cont['date_last_year'] = periods[4][0]
+        self.context = Context(cont)
+
     def test_interventions_privatetopics(self):
 
         self.assertTrue(
@@ -74,6 +85,32 @@ def test_interventions_privatetopics_author_leave(self):
         self.assertEqual(200, response.status_code)
         self.assertContains(response, '<span class="notif-count">1</span>', html=True)
 
+    def test_interventions_humane_delta(self):
+        tr = Template("{% load interventions %}"
+                      "{{ date_today|humane_delta }}"
+                      ).render(self.context)
+        self.assertEqual(u"Aujourd&#39;hui", tr)
+
+        tr = Template("{% load interventions %}"
+                      "{{ date_yesterday|humane_delta }}"
+                      ).render(self.context)
+        self.assertEqual(u"Hier", tr)
+
+        tr = Template("{% load interventions %}"
+                      "{{ date_last_week|humane_delta }}"
+                      ).render(self.context)
+        self.assertEqual(u"Les 7 derniers jours", tr)
+
+        tr = Template("{% load interventions %}"
+                      "{{ date_last_month|humane_delta }}"
+                      ).render(self.context)
+        self.assertEqual(u"Les 30 derniers jours", tr)
+
+        tr = Template("{% load interventions %}"
+                      "{{ date_last_year|humane_delta }}"
+                      ).render(self.context)
+        self.assertEqual(u"Plus ancien", tr)
+
 
 class AlertsTest(TestCase):
     """