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