| from datetime import date |
| import json |
| import os |
| |
| from django.shortcuts import render, redirect, HttpResponse |
| |
| from . import models |
| from . import forms |
| from .celery_tasks.tasks import process_run |
| |
| |
| def index(request): |
| runs = models.TestRun.objects.all() |
| return render(request, "control/index.html", {"runs": runs}) |
| |
| |
| def redirect_to_index(request): |
| return redirect("index") |
| |
| |
| def single_run(request, run_id): |
| run = models.TestRun.objects.get(pk=run_id) |
| if request.method == "POST": |
| form = forms.TestRunForm(request.POST, instance=run) |
| if form.is_valid(): |
| form.save() |
| return redirect("single_run", run_id) |
| else: |
| form = forms.TestRunForm(instance=run) |
| |
| return render(request, "control/update_run.html", |
| {"form": form, "run_id": run_id}) |
| |
| |
| def create_run(request): |
| if request.method == "POST": |
| form = forms.TestRunForm(request.POST) |
| if form.is_valid(): |
| obj = form.save() |
| return redirect("single_run", obj.id) |
| else: |
| form = forms.TestRunForm() |
| |
| return render(request, "control/create_run.html", {"form": form}) |
| |
| |
| def list_reports(request): |
| reports = models.Report.objects.all() |
| return render(request, "control/reports.html", {"reports": reports}) |
| |
| |
| def single_report(request, report_id): |
| report = models.Report.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}) |
| |
| |
| def submit_run(request, run_id): |
| run = models.TestRun.objects.get(pk=run_id) |
| report_name = "{}-{}".format(run.run_name, date.isoformat(date.today())) |
| path = os.path.join(models.fs.location, report_name) |
| with open(path, "w"): |
| pass |
| |
| report = models.Report( |
| test_run=run, |
| report_name=report_name, |
| path=path) |
| report.save() |
| process_run.delay(run_id, report.id, path) |
| |
| return redirect("single_report", report.id) |
| |
| |
| def show_help(request): |
| return render(request, "control/help.html") |