aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Williams <neil.williams@linaro.org>2016-05-24 11:29:31 +0100
committerStevan Radakovic <stevan.radakovic@linaro.org>2016-05-25 13:11:08 +0000
commitfaa4bcaffebc47c941b14bbf1f4442e9eed1320f (patch)
treec2801c5958c58a9ea02c34050a48137acb3f4a23
parentf353aa147ffd23443f0eb991de7a26d1a7158725 (diff)
Add Auth support in REST API for more functions
Definitions and other elements of jobs which might not be public should be accessible using a username and token in the query string. Ensure that existing pages handle restricted jobs correctly. Change-Id: Idb3949c27c1555764dbeeef46fe5edc5cf105649
-rw-r--r--lava_results_app/views/__init__.py7
-rw-r--r--lava_scheduler_app/views.py22
2 files changed, 15 insertions, 14 deletions
diff --git a/lava_results_app/views/__init__.py b/lava_results_app/views/__init__.py
index e45771812..9fd857f8d 100644
--- a/lava_results_app/views/__init__.py
+++ b/lava_results_app/views/__init__.py
@@ -36,6 +36,7 @@ from lava_results_app.utils import StreamEcho
from lava_results_app.dbutils import export_testcase, testcase_export_fields
from lava_scheduler_app.models import TestJob
from lava_scheduler_app.tables import pklink
+from lava_scheduler_app.views import get_restricted_job
from django_tables2 import RequestConfig
from lava_results_app.utils import check_request_auth
from lava_results_app.models import TestSuite, TestCase, TestSet, TestData
@@ -86,7 +87,7 @@ def query(request):
@BreadCrumb("Test job {job}", parent=index, needs=['job'])
def testjob(request, job):
- job = get_object_or_404(TestJob, pk=job)
+ job = get_restricted_job(request.user, pk=job, request=request)
data = ResultsView(request, model=TestSuite, table_class=ResultsTable)
suite_table = ResultsTable(
data.get_table_data().filter(job=job)
@@ -239,7 +240,7 @@ def metadata_export(request, job):
@BreadCrumb("TestSet {case}", parent=testjob, needs=['job', 'pk', 'ts', 'case'])
def testset(request, job, ts, pk, case):
- job = get_object_or_404(TestJob, pk=job)
+ job = get_restricted_job(request.user, pk=job, request=request)
test_suite = get_object_or_404(TestSuite, name=pk, job=job)
test_set = get_object_or_404(TestSet, name=ts, suite=test_suite)
test_cases = TestCase.objects.filter(name=case, test_set=test_set)
@@ -265,7 +266,7 @@ def testcase(request, job, pk, case):
:param case: the name of one or more TestCase objects in the TestSuite
"""
test_suite = get_object_or_404(TestSuite, name=pk, job=job)
- job = get_object_or_404(TestJob, pk=job)
+ job = get_restricted_job(request.user, pk=job, request=request)
test_cases = TestCase.objects.filter(name=case, suite=test_suite)
return render_to_response(
"lava_results_app/case.html", {
diff --git a/lava_scheduler_app/views.py b/lava_scheduler_app/views.py
index 912d68558..1e4f3fcdd 100644
--- a/lava_scheduler_app/views.py
+++ b/lava_scheduler_app/views.py
@@ -1418,7 +1418,7 @@ def job_detail(request, pk):
@BreadCrumb("Definition", parent=job_detail, needs=['pk'])
def job_definition(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
log_file = job.output_file()
description = description_data(job.id) if job.is_pipeline else {}
return render_to_response(
@@ -1459,7 +1459,7 @@ def job_definition_plain(request, pk):
@BreadCrumb("Expanded Definition", parent=job_detail, needs=['pk'])
def expanded_job_definition(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
log_file = job.output_file()
return render_to_response(
"lava_scheduler_app/expanded_job_definition.html",
@@ -1474,7 +1474,7 @@ def expanded_job_definition(request, pk):
def expanded_job_definition_plain(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
response = HttpResponse(job.definition, content_type='text/plain')
response['Content-Disposition'] = "attachment; filename=job_%d.json" % \
job.id
@@ -1483,7 +1483,7 @@ def expanded_job_definition_plain(request, pk):
@BreadCrumb("Multinode definition", parent=job_detail, needs=['pk'])
def multinode_job_definition(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
log_file = job.output_file()
return render_to_response(
"lava_scheduler_app/multinode_job_definition.html",
@@ -1508,7 +1508,7 @@ def multinode_job_definition_plain(request, pk):
@BreadCrumb("VMGroup definition", parent=job_detail, needs=['pk'])
def vmgroup_job_definition(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
log_file = job.output_file()
return render_to_response(
"lava_scheduler_app/vmgroup_job_definition.html",
@@ -1523,7 +1523,7 @@ def vmgroup_job_definition(request, pk):
def vmgroup_job_definition_plain(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
response = HttpResponse(job.vmgroup_definition, content_type='text/plain')
response['Content-Disposition'] = \
"attachment; filename=vmgroup_job_%d.json" % job.id
@@ -1597,7 +1597,7 @@ def favorite_jobs(request, username=None):
@BreadCrumb("Complete log", parent=job_detail, needs=['pk'])
def job_complete_log(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
if not job.is_pipeline:
raise Http404
description = description_data(job.id)
@@ -1632,7 +1632,7 @@ def job_complete_log(request, pk):
def job_section_log(request, job, log_name):
- job = get_restricted_job(request.user, job)
+ job = get_restricted_job(request.user, job, request=request)
if not job.is_pipeline:
raise Http404
path = os.path.join(job.output_dir, 'pipeline', log_name[0], log_name)
@@ -1658,7 +1658,7 @@ def job_section_log(request, job, log_name):
def job_status(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
response_dict = {'job_status': job.get_status_display()}
if (job.actual_device and job.actual_device.status not in [Device.RESERVED, Device.RUNNING]) or \
job.status not in [TestJob.COMPLETE, TestJob.INCOMPLETE, TestJob.CANCELED]:
@@ -1733,7 +1733,7 @@ def job_pipeline_incremental(request, pk):
@BreadCrumb("Complete log", parent=job_detail, needs=['pk'])
def job_log_file(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
if job.is_pipeline:
return redirect(job_complete_log, pk=pk)
log_file = job.output_file()
@@ -1769,7 +1769,7 @@ def job_log_file(request, pk):
def job_log_file_plain(request, pk):
- job = get_restricted_job(request.user, pk)
+ job = get_restricted_job(request.user, pk, request=request)
log_file = job.output_file()
if not log_file:
raise Http404