From 5dab261e106ece9ba222c745673e9fe5aec59019 Mon Sep 17 00:00:00 2001 From: Jaden Diefenbaugh <blakcap@users.noreply.github.com> Date: Wed, 22 Feb 2017 13:43:17 +0100 Subject: [PATCH] when adding exps to report, backend now support adding to group as well --- beat/web/reports/api.py | 2 +- beat/web/reports/models.py | 28 +++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/beat/web/reports/api.py b/beat/web/reports/api.py index 2a38acc8f..1ed094881 100644 --- a/beat/web/reports/api.py +++ b/beat/web/reports/api.py @@ -392,7 +392,7 @@ class ReportAddExperimentsView(BaseReportActionView): def post(self, request, owner_name, report_name): report = self.get_queryset() - details = report.add_experiments(request.data["experiments"]) + details = report.add_experiments(request.data["experiments"], request.data['group']) if details['success']: if (len(details['unknown_experiments']) == 0) and \ diff --git a/beat/web/reports/models.py b/beat/web/reports/models.py index cd2222490..dd45defc3 100644 --- a/beat/web/reports/models.py +++ b/beat/web/reports/models.py @@ -205,7 +205,7 @@ class Report(models.Model): self.referenced_plotterparameters.add(plotterparameter) - def add_experiments(self, experiment_fullname_list): + def add_experiments(self, experiment_fullname_list, group='default'): # Check that the report is modifiable if self.status != Report.EDITABLE: return { @@ -219,6 +219,23 @@ class Report(models.Model): experiments, unknown_experiments = self._get_experiments_from_fullname_list(experiment_fullname_list) + # Find the group to add experiments to + if len(group) == 0: + return { + 'success': False, + 'error': 'Empty group given' + } + report_content = json.loads(self.content) + curr_group = {} + if report_content['groups'].has_key(group): + curr_group = report_content['groups'][group] + else: + curr_group = { + 'experiments': [], + 'reportItemIds': [], + 'analyzer': '' + } + for experiment in experiments: # Check experiments accessibility (is_accessible, accessibility) = experiment.accessibility_for(self.author) @@ -234,9 +251,18 @@ class Report(models.Model): for experiment in accessible_experiments: if len(experiment.blocks.filter(analyzer=True)) >= 1: self.experiments.add(experiment) + curr_group['experiments'].append(experiment.fullname()) + if len(curr_group['experiments']) == 1 and group != 'default': + import ipdb; ipdb.set_trace() + curr_group['analyzer'] = list(experiment.analyzers())[0] else: incompatible_experiments.append(experiment.fullname()) + report_content['groups'][group] = curr_group + + self.content = json.dumps(report_content) + self.save() + return { 'success': True, 'unknown_experiments': unknown_experiments, -- GitLab