From 2916330e89b8a6e039362d5cf6f05e21d69f2ba2 Mon Sep 17 00:00:00 2001 From: yangdsh Date: Tue, 28 Apr 2020 03:11:25 +0000 Subject: [PATCH] dump session target objectives to csv --- server/website/website/templates/session.html | 1 + server/website/website/urls.py | 1 + server/website/website/views.py | 25 +++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/server/website/website/templates/session.html b/server/website/website/templates/session.html index d489e43..3558077 100644 --- a/server/website/website/templates/session.html +++ b/server/website/website/templates/session.html @@ -65,6 +65,7 @@ caption span {float: right;} (edit) (edit knobs) (dump debug info) + (dump objectives) diff --git a/server/website/website/urls.py b/server/website/website/urls.py index 81627b8..361e064 100644 --- a/server/website/website/urls.py +++ b/server/website/website/urls.py @@ -38,6 +38,7 @@ urlpatterns = [ url(r'^projects/(?P[0-9]+)/sessions/(?P[0-9]+)/editKnobs/$', website_views.edit_knobs, name='edit_knobs'), url(r'^projects/(?P[0-9]+)/sessions/delete/$', website_views.delete_session, name='delete_session'), url(r'^projects/(?P[0-9]+)/sessions/(?P[0-9]+)/dump/$', website_views.download_debug_info, name='dump_debug_data'), + url(r'^projects/(?P[0-9]+)/sessions/(?P[0-9]+)/dump_objectives/$', website_views.download_objectives, name='dump_objectives'), # URLs for result views url(r'^new_result/', website_views.new_result, name='new_result'), diff --git a/server/website/website/views.py b/server/website/website/views.py index 0460832..7bb437b 100644 --- a/server/website/website/views.py +++ b/server/website/website/views.py @@ -1008,6 +1008,31 @@ def download_debug_info(request, project_id, session_id): # pylint: disable=unu return response +@login_required(login_url=reverse_lazy('login')) +def download_objectives(request, project_id, session_id): # pylint: disable=unused-argument + session = Session.objects.get(pk=session_id) + response = HttpResponse(content_type='text/csv') + response['Content-Disposition'] = 'attachment; filename={}_objectives.csv'.format(session.name) + writer = csv.writer(response) + + objectives = target_objectives.get_all(session.dbms.pk) + labels = ['id'] + for objective_name in objectives.keys(): + labels.append(objective_name) + writer.writerow(labels) + metric_files = MetricData.objects.filter(session=session) + row_cnt = 0 + for metric_file in metric_files: + if 'range_test' not in metric_file.name: + metric_data = JSONUtil.loads(metric_file.data) + row_data = [str(row_cnt)] + for objective_name in objectives.keys(): + row_data.append(metric_data.get(objective_name, -1)) + writer.writerow(row_data) + row_cnt += 1 + return response + + @login_required(login_url=reverse_lazy('login')) def pipeline_data_view(request, pipeline_id): pipeline_data = PipelineData.objects.get(pk=pipeline_id)