blob: 68738c5d1d28235425d5fc5ddc3909ffe6b8df5d [file] [log] [blame]
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +03001from datetime import date
2import json
3import os
4
5from django.shortcuts import render, redirect, HttpResponse
6
7from . import models
8from . import forms
9from .celery_tasks.tasks import process_run
10
11
12def index(request):
13 runs = models.TestRun.objects.all()
14 return render(request, "control/index.html", {"runs": runs})
15
16
17def redirect_to_index(request):
18 return redirect("index")
19
20
21def single_run(request, run_id):
22 run = models.TestRun.objects.get(pk=run_id)
23 if request.method == "POST":
24 form = forms.TestRunForm(request.POST, instance=run)
25 if form.is_valid():
26 form.save()
27 return redirect("single_run", run_id)
28 else:
29 form = forms.TestRunForm(instance=run)
30
31 return render(request, "control/update_run.html",
32 {"form": form, "run_id": run_id})
33
34
35def create_run(request):
36 if request.method == "POST":
37 form = forms.TestRunForm(request.POST)
38 if form.is_valid():
39 obj = form.save()
40 return redirect("single_run", obj.id)
41 else:
42 form = forms.TestRunForm()
43
44 return render(request, "control/create_run.html", {"form": form})
45
46
47def list_reports(request):
48 reports = models.Report.objects.all()
49 return render(request, "control/reports.html", {"reports": reports})
50
51
52def single_report(request, report_id):
53 report = models.Report.objects.get(pk=report_id)
54 data = report.path.read().decode("utf-8")
55 if request.method == "POST" and request.is_ajax():
56 return HttpResponse(
57 json.dumps({"data": data, "finished": report.finished}),
58 content_type="application/json")
59 return render(request, "control/report.html",
60 {"report_id": report.id, "report": data})
61
62
63def submit_run(request, run_id):
64 run = models.TestRun.objects.get(pk=run_id)
65 report_name = "{}-{}".format(run.run_name, date.isoformat(date.today()))
66 path = os.path.join(models.fs.location, report_name)
67 with open(path, "w"):
68 pass
69
70 report = models.Report(
71 test_run=run,
72 report_name=report_name,
73 path=path)
74 report.save()
75 process_run.delay(run_id, report.id, path)
76
Oleksii Petrenko12508832020-07-10 18:13:53 +030077 return redirect("single_report", report.id)
Oleksii Petrenko24f1f8f2020-06-26 18:09:43 +030078
79
80def show_help(request):
81 return render(request, "control/help.html")