Add jenkins plot
Adds jenkins plot celery task and ui page.
Related-PROD: PRODX-7403
Change-Id: Ib6984009560a8eba90b794efeb9cdee4b3fe8c0c
diff --git a/testrail_bot/control/views.py b/testrail_bot/control/views.py
index f813f86..67a368d 100644
--- a/testrail_bot/control/views.py
+++ b/testrail_bot/control/views.py
@@ -6,11 +6,11 @@
from . import models
from . import forms
-from .celery_tasks.tasks import process_run
+from .celery_tasks.tasks import process_run, update_plot_data
def index(request):
- runs = models.TestRun.objects.all()
+ runs = models.TestRailTestRun.objects.all()
return render(request, "control/index.html", {"runs": runs})
@@ -19,7 +19,7 @@
def single_run(request, run_id):
- run = models.TestRun.objects.get(pk=run_id)
+ run = models.TestRailTestRun.objects.get(pk=run_id)
if request.method == "POST":
form = forms.TestRunForm(request.POST, instance=run)
if form.is_valid():
@@ -45,12 +45,12 @@
def list_reports(request):
- reports = models.Report.objects.order_by("-created_at").all()
+ reports = models.TestRailReport.objects.order_by("-created_at").all()
return render(request, "control/reports.html", {"reports": reports})
def single_report(request, report_id):
- report = models.Report.objects.get(pk=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(
@@ -61,7 +61,7 @@
def submit_run(request, run_id):
- run = models.TestRun.objects.get(pk=run_id)
+ run = models.TestRailTestRun.objects.get(pk=run_id)
report_name = "{}-{}".format(
run.run_name, datetime.datetime.isoformat(datetime.datetime.now()))
path = os.path.join(models.fs.location, report_name)
@@ -74,7 +74,7 @@
form.cleaned_data["timestamp"] + datetime.timedelta(days=1),
datetime.datetime.min.time()).timestamp()
- report = models.Report(
+ report = models.TestRailReport(
test_run=run,
report_name=report_name,
path=path)
@@ -86,3 +86,43 @@
def show_help(request):
return render(request, "control/help.html")
+
+
+def update_jenkins_plot(request):
+ try:
+ models.ActionLog.objects.get(name="update_plot_started")
+ return HttpResponse("Update in progress", status=403)
+ except models.ActionLog.DoesNotExist:
+ pass
+ update = models.ActionLog(
+ name="update_plot_started", date=datetime.datetime.now())
+ update.save()
+ update_plot_data.delay()
+ return HttpResponse("Started Update", status=200)
+
+
+def jenkins_plot(request):
+ try:
+ update_date = models.ActionLog.objects.get(
+ name="update_jenkins_plot").date
+ except models.ActionLog.DoesNotExist:
+ update_date = None
+ try:
+ models.ActionLog.objects.get(name="update_plot_started")
+ update_started = True
+ except models.ActionLog.DoesNotExist:
+ update_started = False
+
+ job_names_path = os.path.join(models.fs.location, "job_names.txt")
+ job_names = []
+ if os.path.exists(job_names_path):
+ try:
+ with open(job_names_path, "r") as f:
+ job_names = json.load(f)
+ except:
+ pass
+
+ return render(
+ request, "control/jenkins_plot.html",
+ {"update_date": update_date, "update_started": update_started,
+ "job_names": enumerate(job_names, 1)})