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)})