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',