Switch to bootstrap5

Change-Id: Ie69c93f0495b16b687ae8d6fbbdca56cf64bab9d
diff --git a/testrail_bot/control/templates/base.html b/testrail_bot/control/templates/base.html
index 464681a..d2dd9a3 100644
--- a/testrail_bot/control/templates/base.html
+++ b/testrail_bot/control/templates/base.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
-{% load bootstrap3 %}
+{% load bootstrap5 %}
 {% bootstrap_css %}
 {% bootstrap_javascript %}
 
@@ -8,25 +8,30 @@
     <meta charset="UTF-8">
     <title>TestRail bot configuration</title>
     <style>
-        body { padding-top: 70px; }
+        body { padding-top: 0px; }
     </style>
     {% block head %}
     {% endblock %}
 </head>
 <body>
-<nav class="navbar navbar-inverse navbar-fixed-top">
+<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
     <div class="container-fluid">
-    <div class="navbar-header">
-      <a class="navbar-brand" href="{% url 'index' %}">TestRail bot</a>
-    </div>
-    <ul class="nav navbar-nav">
-        <li><a href="{% url 'index' %}">Test Runs</a></li>
-        <li><a href="{% url 'list_reports' %}">Reports</a></li>
-        <li><a href="{% url 'help' %}">Help</a></li>
-        <li><a href="{% url 'jenkins_plot' %}">Jenkins plot</a></li>
+        <div class="navbar-header">
+            <a class="navbar-brand" href="{% url 'index' %}">TestRail bot</a>
+        </div>
+        <ul class="navbar-nav navbar-collapse">
+            <li class="nav-item ">
+                <a class="nav-link" href="{% url 'index' %}">Test Runs</a></li>
+            <li class="nav-item">
+                <a class="nav-link" href="{% url 'list_reports' %}">Reports</a></li>
+            <li class="nav-item">
+                <a class="nav-link" href="{% url 'help' %}">Help</a></li>
+            <li class="nav-item">
+                <a class="nav-link" href="{% url 'jenkins_plot' %}">Jenkins
+                    plot</a></li>
 
-    </ul>
-  </div>
+        </ul>
+    </div>
 </nav>
 {% block section %}{% endblock %}
 </body>
diff --git a/testrail_bot/control/templates/control/create_run.html b/testrail_bot/control/templates/control/create_run.html
index 136b7c1..19d8a16 100644
--- a/testrail_bot/control/templates/control/create_run.html
+++ b/testrail_bot/control/templates/control/create_run.html
@@ -1,5 +1,5 @@
 {% extends "base.html" %}
-{% load bootstrap3 %}
+{% load bootstrap5 %}
 {% block section %}
 <div>
   <input type="button" onclick="location.href={% url 'index' %}" height="8"
diff --git a/testrail_bot/control/templates/control/index.html b/testrail_bot/control/templates/control/index.html
index 359e975..64e3e99 100644
--- a/testrail_bot/control/templates/control/index.html
+++ b/testrail_bot/control/templates/control/index.html
@@ -1,7 +1,7 @@
 {% extends "base.html" %}
 {% block section %}
 <input type="button" onclick="location.href={% url 'create_run' %}"
-       class="btn btn-primary" value="Create new Test Run" />
+       class="btn btn-primary m-1" value="Create new Test Run" />
 <p><b>Test Runs</b> (total {{ runs|length }} runs):</p>
 <div class="list-group">
     {% for run in runs %}
diff --git a/testrail_bot/control/templates/control/report.html b/testrail_bot/control/templates/control/report.html
index 2adc34b..84dd072 100644
--- a/testrail_bot/control/templates/control/report.html
+++ b/testrail_bot/control/templates/control/report.html
@@ -1,44 +1,10 @@
 {% extends "base.html" %}
 {% block section %}
-{% load bootstrap3 %}
-{% bootstrap_javascript jquery=True %}
-<script>
-function getCookie(name) {
-    let cookieValue = null;
-    if (document.cookie && document.cookie !== '') {
-        const cookies = document.cookie.split(';');
-        for (let i = 0; i < cookies.length; i++) {
-            const cookie = cookies[i].trim();
-            // Does this cookie string begin with the name we want?
-            if (cookie.substring(0, name.length + 1) === (name + '=')) {
-                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
-                break;
-            }
-        }
-    }
-    return cookieValue;
-};
-const csrftoken = getCookie('csrftoken');
+{% load bootstrap5 %}
 
-function send(){
-    $.ajax({
-        type: "post",
-        url: "{% url 'single_report' report_id %}",
-        dataType: "json",
-        headers: {'X-CSRFToken': csrftoken},
-        success:function(data)
-        {
-            tag = document.getElementById("data");
-            tag.innerHTML = data["data"];
-            //Send another request in 10 seconds.
-            if (data["finished"] != true){
-                setTimeout(function(){
-                    send();
-                }, 3000);
-            }
-        }
-    });
-}
-send();</script>
-<pre id="data">{{report}}</pre>
+{% if not finished %}
+<meta http-equiv="refresh" content="5">
+{% endif %}
+
+<pre id="data" class="p-4 border">{{ report | safe }}</pre>
 {% endblock %}
\ No newline at end of file
diff --git a/testrail_bot/control/templates/control/update_run.html b/testrail_bot/control/templates/control/update_run.html
index 8ccd94e..6b28cdf 100644
--- a/testrail_bot/control/templates/control/update_run.html
+++ b/testrail_bot/control/templates/control/update_run.html
@@ -1,38 +1,14 @@
 {% extends "base.html" %}
-{% load bootstrap3 %}
+{% load bootstrap5 %}
 {% block section %}
-<div>
+<div class="p-2">
   <input type="button" onclick="location.href={% url 'index' %}" height="8"
-       class="btn btn-primary" value="<- Back"/>
+       class="btn btn-primary m-1" value="<- Back"/>
   <h3>Edit Test Run #{{ run_id }}</h3>
   <form action="{% url 'single_run' run_id %}" method="post" class="form">
-    {% csrf_token %}
-      {% bootstrap_form_errors form type='non_fields' %}
-      <div class="col-xs-8">{% bootstrap_field form.project_name  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.plan_name size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.run_name  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.test_pattern  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.run_id  size='sm' %}</div>
-      <div class="col-xs-8">{% bootstrap_field form.created_by_id  size='sm' %}</div>
-      <div class="col-xs-8">
-        User to id list: <ul><li>os-qa-bot = <code>109</code></li></ul>
-      </div>
-      <div class="col-xs-8">{% bootstrap_field form.filter_func  size='sm' %}</div>
-      <div class="col-xs-8">
-        {% bootstrap_field form.timestamp size='sm' %}
-      </div>
-      <div class="col-md-5">
-        {% bootstrap_field form.ip_filter  size='sm'%}
-      </div>
-      <div class="col-md-5">
-        {% bootstrap_field form.uuid_filter size='sm'%}
-      </div>
-      <div class="col-md-5">
-        {% bootstrap_field form.filter_last_traceback size='sm'%}
-      </div>
     {% buttons %}
     <div class="btn-toolbar col-xs-7">
-      <button type="submit" class="btn btn-primary">
+      <button type="submit" class="btn btn-primary m-1">
         <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
              height="1em" viewBox="0,0,256,256">
           <g fill="#fffafa" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
@@ -40,7 +16,8 @@
         </svg>
          Save
       </button>
-      <button type="submit" formaction="{% url 'submit_run' run_id %}" class="btn btn-primary">
+      <button type="submit" formaction="{% url 'submit_run' run_id %}"
+              class="btn btn-primary m-1">
         <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-chevron-double-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
           <path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z"/>
           <path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z"/>
@@ -48,7 +25,75 @@
          Submit
       </button>
       <button type="submit" formaction="{% url 'delete_run' run_id %}"
-              class="btn btn-danger">
+              class="btn btn-danger m-1">
+        <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
+             height="1em" viewBox="0,0,256,256">
+          <g fill="#ffffff" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
+          <path d="M10,2l-1,1h-4c-0.6,0 -1,0.4 -1,1c0,0.6 0.4,1 1,1h2h10h2c0.6,0 1,-0.4 1,-1c0,-0.6 -0.4,-1 -1,-1h-4l-1,-1zM5,7v13c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2v-13zM9,9c0.6,0 1,0.4 1,1v9c0,0.6 -0.4,1 -1,1c-0.6,0 -1,-0.4 -1,-1v-9c0,-0.6 0.4,-1 1,-1zM15,9c0.6,0 1,0.4 1,1v9c0,0.6 -0.4,1 -1,1c-0.6,0 -1,-0.4 -1,-1v-9c0,-0.6 0.4,-1 1,-1z"></path></g></g>
+        </svg>
+         Delete
+      </button>
+    </div>
+    {% endbuttons %}
+    {% csrf_token %}
+      {% bootstrap_form_errors form type='non_fields' %}
+      <div class="col-xs-8">
+        {% bootstrap_field form.project_name  size='sm' %}</div>
+      <div class="col-xs-8">
+        {% bootstrap_field form.run_id  size='sm' %}</div>
+      <div class="col-xs-8">
+        {% bootstrap_field form.run_name  size='sm' %}</div>
+      <div class=" p-3 mt-5 bg-light bg-gradient">
+        <h5>TestRail filters</h5>
+        <div class="col-xs-8">
+          {% bootstrap_field form.plan_name size='sm' %}</div>
+
+        <div class="col-xs-8">
+          {% bootstrap_field form.test_pattern  size='sm' %}</div>
+
+        <div class="col-xs-8">
+          {% bootstrap_field form.created_by_id  size='sm' %}</div>
+        <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>
+      </div>
+      <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'%}
+        </div>
+        <div class="col-md-5">
+          {% bootstrap_field form.uuid_filter size='sm'%}
+        </div>
+        <div class="col-md-5">
+          {% bootstrap_field form.filter_last_traceback size='sm'%}
+        </div>
+        <div class="col-xs-8">
+          {% bootstrap_field form.filter_func  size='sm' %}</div>
+      </div>
+    {% buttons %}
+    <div class="btn-toolbar col-xs-7">
+      <button type="submit" class="btn btn-primary m-1">
+        <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
+             height="1em" viewBox="0,0,256,256">
+          <g fill="#fffafa" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
+          <path d="M6,2c-0.13812,0 -0.27212,0.01438 -0.40234,0.04102c-0.91157,0.18642 -1.59766,0.99211 -1.59766,1.95898v18l8,-3l8,3v-18c0,-0.1375 -0.01426,-0.27246 -0.04102,-0.40234c-0.15978,-0.78135 -0.77529,-1.39686 -1.55664,-1.55664c-0.13022,-0.02663 -0.26422,-0.04102 -0.40234,-0.04102z"></path></g></g>
+        </svg>
+         Save
+      </button>
+      <button type="submit" formaction="{% url 'submit_run' run_id %}"
+              class="btn btn-primary m-1">
+        <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-chevron-double-right" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
+          <path fill-rule="evenodd" d="M3.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L9.293 8 3.646 2.354a.5.5 0 0 1 0-.708z"/>
+          <path fill-rule="evenodd" d="M7.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L13.293 8 7.646 2.354a.5.5 0 0 1 0-.708z"/>
+        </svg>
+         Submit
+      </button>
+      <button type="submit" formaction="{% url 'delete_run' run_id %}"
+              class="btn btn-danger m-1">
         <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="1em"
              height="1em" viewBox="0,0,256,256">
           <g fill="#ffffff" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><g transform="scale(10.66667,10.66667)">
diff --git a/testrail_bot/control/views.py b/testrail_bot/control/views.py
index 2c9f0b2..18b5663 100644
--- a/testrail_bot/control/views.py
+++ b/testrail_bot/control/views.py
@@ -54,12 +54,10 @@
 def single_report(request, report_id):
     report = models.TestRailReport.objects.get(pk=report_id)
     data = report.path.read().decode("utf-8")
-    if request.method == "POST" and request.is_ajax():
-        return HttpResponse(
-            json.dumps({"data": data, "finished": report.finished}),
-            content_type="application/json")
     return render(request, "control/report.html",
-                  {"report_id": report.id, "report": data})
+                  {"report_id": report.id,
+                   "report": data,
+                   "finished": report.finished})
 
 
 def submit_run(request, run_id):
diff --git a/testrail_bot/requirements.txt b/testrail_bot/requirements.txt
index 5762f72..74b4dfc 100644
--- a/testrail_bot/requirements.txt
+++ b/testrail_bot/requirements.txt
@@ -1,9 +1,10 @@
 celery==4.4.6
 Django==3.0.7
-django-bootstrap3==14.0.0
+# django-bootstrap3==14.0.0
 psycopg2-binary==2.8.5
 redis==3.5.3
 testrail-api==1.8.0
 uWSGI==2.0.19.1
 python-jenkins==1.7.0
 matplotlib==3.3.2
+django-bootstrap-v5
diff --git a/testrail_bot/testrail_bot/settings.py b/testrail_bot/testrail_bot/settings.py
index 74464f2..a40279d 100644
--- a/testrail_bot/testrail_bot/settings.py
+++ b/testrail_bot/testrail_bot/settings.py
@@ -32,7 +32,7 @@
 
 INSTALLED_APPS = [
     'control.apps.ControlConfig',
-    'bootstrap3',
+    'bootstrap5',
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',