Added possibility to choose the time range in which bot will search test results
PRODX-37645

Change-Id: I360a4df3805f222879b70e505e9d2adde3a0a012
diff --git a/testrail_bot/control/celery_tasks/testrail_pipeline.py b/testrail_bot/control/celery_tasks/testrail_pipeline.py
index f1e4bf0..d90f5e7 100644
--- a/testrail_bot/control/celery_tasks/testrail_pipeline.py
+++ b/testrail_bot/control/celery_tasks/testrail_pipeline.py
@@ -92,6 +92,7 @@
         plan_name: str,
         test_pattern: str,
         created_by_id: int,
+        created_after: int,
         created_before: int,
         run_name: str,
         text_filters: dict,
@@ -106,7 +107,9 @@
         :param plan_name: The name of the test plan to search within
         :param test_pattern: A pattern for filtering test runs
         :param created_by_id: The ID of the user who created the test plan
-        :param created_before: The date (timestamp) before which the test
+        :param created_after: The date (created_after) after which the test
+        plan was created
+        :param created_before: The date (created_before) before which the test
         plan was created
         :param run_name: The name of the test run
         :param text_filters: A dictionary of text filters to apply when
@@ -118,7 +121,8 @@
         """
     end_lookup_date = dt.strptime(
         f"{created_before} 23:59:59", "%Y-%m-%d %H:%M:%S")
-    start_lookup_date = end_lookup_date + timedelta(days=-3 * 30)
+    start_lookup_date = dt.strptime(
+        f"{created_after} 00:00:00", "%Y-%m-%d %H:%M:%S")
     filters = {
         "created_by": created_by_id,
         "created_before": int(dt.timestamp(end_lookup_date)),
diff --git a/testrail_bot/control/forms.py b/testrail_bot/control/forms.py
index a7f28bb..0ad6c12 100644
--- a/testrail_bot/control/forms.py
+++ b/testrail_bot/control/forms.py
@@ -6,7 +6,9 @@
 class TestRunForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
-        self.fields["timestamp"].widget = forms.SelectDateWidget(years=[
+        self.fields["created_after"].widget = forms.SelectDateWidget(years=[
+            date.today().year + i for i in range(-3, 5)])
+        self.fields["created_before"].widget = forms.SelectDateWidget(years=[
             date.today().year + i for i in range(-3, 5)])
     class Meta:
         model = TestRailTestRun
@@ -23,10 +25,14 @@
             "uuid_filter": "Mask all UUID with xxxx",
             "filter_last_traceback": "Use only traceback to "
                                      "compare comments",
-            "timestamp": "Search for test plans created before this date"
+            "created_after": "Search in period from",
+            "created_before": "till",
+
         }
         help_texts = {
             "filter_func": "Leave blank if not used",
+            "created_before": "at 23:59:59",
+            "created_after": "at 00:00:00",
         }
 
 
diff --git a/testrail_bot/control/migrations/0004_rename_timestamp_testrailtestrun_created_before.py b/testrail_bot/control/migrations/0004_rename_timestamp_testrailtestrun_created_before.py
new file mode 100644
index 0000000..aee1b1f
--- /dev/null
+++ b/testrail_bot/control/migrations/0004_rename_timestamp_testrailtestrun_created_before.py
@@ -0,0 +1,24 @@
+# Generated by Django 4.2.7 on 2023-11-28 14:07
+
+import datetime
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('control', '0003_suitepassrate_diffofsuitespassrates'),
+    ]
+
+    operations = [
+        migrations.RenameField(
+            model_name='testrailtestrun',
+            old_name='timestamp',
+            new_name='created_before',
+        ),
+        migrations.AddField(
+            model_name='testrailtestrun',
+            name='created_after',
+            field=models.DateField(default=datetime.date(2023, 8, 30)),
+        ),
+    ]
diff --git a/testrail_bot/control/models.py b/testrail_bot/control/models.py
index 0956b1a..94bade9 100644
--- a/testrail_bot/control/models.py
+++ b/testrail_bot/control/models.py
@@ -43,7 +43,9 @@
     ip_filter = models.BooleanField(default=True)
     uuid_filter = models.BooleanField(default=True)
     filter_last_traceback = models.BooleanField(default=False)
-    timestamp = models.DateField(default=datetime.date.today())
+    created_before = models.DateField(default=datetime.date.today())
+    created_after = models.DateField(default=datetime.date.today() +
+                                             datetime.timedelta(days=-3*30))
 
     @property
     def text_filters(self):
@@ -58,7 +60,8 @@
     def testrail_filters(self):
         return {
             "created_by_id": self.created_by_id,
-            "created_before": self.timestamp,
+            "created_after": self.created_after,
+            "created_before": self.created_before,
             "run_name": self.run_name,
             "plan_name": self.plan_name,
             "test_pattern": self.test_pattern,
diff --git a/testrail_bot/control/templates/control/update_run.html b/testrail_bot/control/templates/control/update_run.html
index 31c634a..3082fec 100644
--- a/testrail_bot/control/templates/control/update_run.html
+++ b/testrail_bot/control/templates/control/update_run.html
@@ -64,11 +64,14 @@
         <div class="col-xs-8 small">
           User to id list: <ul><li>os-qa-bot = <code>109</code></li></ul>
         </div>
-        <div class="col-xs-8">
-          {% bootstrap_field form.timestamp size='sm' %}
+        <div class="col-sm-auto mx-3">
+          {% bootstrap_field form.created_after size='sm' %}
+        </div>
+        <div class="col-sm-auto mx-3">
+          {% bootstrap_field form.created_before size='sm' %}
         </div>
       </div>
-      <div class=" p-3 mt-5 bg-light bg-gradient">
+      <div class="p-3 mt-5 bg-light bg-gradient">
         <h5>Text filters</h5>
         <div class="col-md-5">
           {% bootstrap_field form.ip_filter  size='sm'%}
diff --git a/testrail_bot/control/views.py b/testrail_bot/control/views.py
index 0ebdf41..7a34327 100644
--- a/testrail_bot/control/views.py
+++ b/testrail_bot/control/views.py
@@ -45,7 +45,9 @@
     else:
         form = forms.TestRunForm()
 
-    form.fields["timestamp"].initial = datetime.date.today()
+    form.fields["created_after"].initial = datetime.date.today() + \
+                                           datetime.timedelta(days=-3 * 30)
+    form.fields["created_before"].initial = datetime.date.today()
     return render(request, "control/update_run.html", {"form": form})