From bcf947a1624848c9dee1204d3d4f7b005ae706ed Mon Sep 17 00:00:00 2001
From: Jan Mach <jan.mach@cesnet.cz>
Date: Thu, 20 Feb 2020 19:32:32 +0100
Subject: [PATCH] Added more convenient quicksearch time window options.

---
 lib/hawat/base.py  | 23 +++++++++++++-----
 lib/hawat/const.py | 59 ++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 72 insertions(+), 10 deletions(-)

diff --git a/lib/hawat/base.py b/lib/hawat/base.py
index 52dfcf2f..da4e24b0 100644
--- a/lib/hawat/base.py
+++ b/lib/hawat/base.py
@@ -1425,13 +1425,24 @@ class BaseSearchView(RenderableView, HawatUtils):
         """
         quicksearch_list = []
         for item in (
-                ['14d', gettext('Search for last 14 days')],
-                ['4w',  gettext('Search for last 4 weeks')],
+                [ '1h', gettext('Search for last hour')],
+                [ '2h', gettext('Search for last 2 hours')],
+                [ '3h', gettext('Search for last 3 hours')],
+                [ '4h', gettext('Search for last 4 hours')],
+                [ '6h', gettext('Search for last 6 hours')],
+                ['12h', gettext('Search for last 12 hours')],
+                [ '1d', gettext('Search for last day')],
+                [ '2d', gettext('Search for last 2 days')],
+                [ '3d', gettext('Search for last 3 days')],
+                [ '1w', gettext('Search for last week')],
+                [ '2w', gettext('Search for last 2 weeks')],
+                [ '4w', gettext('Search for last 4 weeks')],
                 ['12w', gettext('Search for last 12 weeks')],
-                ['td',  gettext('Search for today')],
-                ['tw',  gettext('Search for this week')],
-                ['tm',  gettext('Search for this month')],
-                ['ty',  gettext('Search for this year')],
+
+                [ 'td', gettext('Search for today')],
+                [ 'tw', gettext('Search for this week')],
+                [ 'tm', gettext('Search for this month')],
+                [ 'ty', gettext('Search for this year')],
             ):
             try:
                 dt_from = cls.get_datetime_window(
diff --git a/lib/hawat/const.py b/lib/hawat/const.py
index 6badbdc5..c821fede 100644
--- a/lib/hawat/const.py
+++ b/lib/hawat/const.py
@@ -342,10 +342,60 @@ that are used in this application.
 """
 
 TIME_WINDOWS = {
-    '14d': {
-        'current':  lambda x: (x - datetime.timedelta(days = 14)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
-        'previous': lambda x: (x - datetime.timedelta(days = 14)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
-        'next':     lambda x: (x + datetime.timedelta(days = 14)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    '1h': {
+        'current':  lambda x: (x - datetime.timedelta(hours = 1)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(hours = 1)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(hours = 1)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '2h': {
+        'current':  lambda x: (x - datetime.timedelta(hours = 2)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(hours = 2)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(hours = 2)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '3h': {
+        'current':  lambda x: (x - datetime.timedelta(hours = 3)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(hours = 3)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(hours = 3)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '4h': {
+        'current':  lambda x: (x - datetime.timedelta(hours = 4)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(hours = 4)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(hours = 4)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '6h': {
+        'current':  lambda x: (x - datetime.timedelta(hours = 6)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(hours = 6)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(hours = 6)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '12h': {
+        'current':  lambda x: (x - datetime.timedelta(hours = 12)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(hours = 12)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(hours = 12)).replace(minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '1d': {
+        'current':  lambda x: (x - datetime.timedelta(days = 1)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(days = 1)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(days = 1)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '2d': {
+        'current':  lambda x: (x - datetime.timedelta(days = 2)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(days = 2)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(days = 2)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '3d': {
+        'current':  lambda x: (x - datetime.timedelta(days = 3)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(days = 3)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(days = 3)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '1w': {
+        'current':  lambda x: (x - datetime.timedelta(weeks = 1)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(weeks = 1)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(weeks = 1)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
+    },
+    '2w': {
+        'current':  lambda x: (x - datetime.timedelta(weeks = 2)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'previous': lambda x: (x - datetime.timedelta(weeks = 2)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
+        'next':     lambda x: (x + datetime.timedelta(weeks = 2)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
     },
     '4w': {
         'current':  lambda x: (x - datetime.timedelta(weeks = 4)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
@@ -357,6 +407,7 @@ TIME_WINDOWS = {
         'previous': lambda x: (x - datetime.timedelta(weeks = 12)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
         'next':     lambda x: (x + datetime.timedelta(weeks = 12)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None)
     },
+
     'td': {
         'current':  lambda x: x.replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
         'previous': lambda x: (x - datetime.timedelta(days = 1)).replace(hour = 0, minute = 0, second = 0, microsecond = 0, tzinfo = None),
-- 
GitLab