From 821af4125590bdd5f7820cfa4b6d64320d8c78b1 Mon Sep 17 00:00:00 2001
From: Flavio Tarsetti <flavio.tarsetti@idiap.ch>
Date: Tue, 21 Mar 2017 15:17:10 +0100
Subject: [PATCH] [utils] in management/commands/install.py added default
 plotterparameters and extra plotterparameters

---
 beat/web/utils/management/commands/install.py | 67 +++++++++++++++++--
 1 file changed, 63 insertions(+), 4 deletions(-)

diff --git a/beat/web/utils/management/commands/install.py b/beat/web/utils/management/commands/install.py
index f1d85e323..c863d605a 100755
--- a/beat/web/utils/management/commands/install.py
+++ b/beat/web/utils/management/commands/install.py
@@ -668,7 +668,8 @@ def upload_plotter(prefix, name, data):
     description = storage.doc.load() if storage.doc.exists() else ''
     code = storage.code.load() if storage.code and storage.code.exists() else ''
 
-    from ....plotters.models import Plotter, DefaultPlotter
+    from ....plotters.models import Plotter, DefaultPlotter, PlotterParameter
+    from ....common.models import Shareable
 
     author = data[name.split(os.sep)[0].replace('name', '')]
 
@@ -717,22 +718,80 @@ def upload_plotter(prefix, name, data):
         plotter.share(public=True)
         logger.info("Set plotter `%s' as public", plotter)
 
-
     # Make it the format default
     if plotter.dataformat.author.username == author.username and \
             plotter.dataformat.name == storage.name and \
             plotter.dataformat.version == int(storage.version):
 
+        # Adding some plotter parameters
+        plotterparameter_data_file_location = prefix + "/plotters/" + name.split("/")[0] + "/" + \
+            name.split("/")[1] + "/default_plotterparameter.txt"
+
+        short_desc_file_location = prefix + "/plotters/" + name.split("/")[0] + "/" + \
+            name.split("/")[1] + "/default_plotterparameter_short_description.txt"
+
+        with open(plotterparameter_data_file_location) as plotterparameter_data_file:
+            plotterparameter_data = simplejson.load(plotterparameter_data_file)
+
+        with open(short_desc_file_location) as short_desc_data_file:
+            short_desc = short_desc_data_file.readline().split("\n")[0]
+
+        if plotter.dataformat.name != "scatter":
+            plotterparameter = PlotterParameter.objects.create(name=plotter.dataformat.name,
+            author=author, plotter=plotter, data=simplejson.dumps(plotterparameter_data,
+              indent=4), short_description=short_desc, sharing = Shareable.PUBLIC)
+        else:
+            plotterparameter = PlotterParameter.objects.create(name=plotter.dataformat.name,
+            author=author, plotter=plotter, data=simplejson.dumps(plotterparameter_data,
+              indent=4), short_description=short_desc)
+        plotterparameter.save()
+        logger.info("Add plotterparameter `%s' ", plotterparameter)
+
+
         default = DefaultPlotter.objects.filter(dataformat=plotter.dataformat)
 
         if default:
             default.plotter = plotter
         else:
-            default = DefaultPlotter(dataformat=plotter.dataformat, plotter=plotter)
+            default = DefaultPlotter(dataformat=plotter.dataformat,
+                plotter=plotter, parameter=plotterparameter)
             default.save()
 
-        logger.info("Set plotter `%s' as default for `%s'", plotter, plotter.dataformat)
+        logger.info("Set plotter `%s' and plotterparameter `%s'  as default for `%s'", plotter, plotterparameter, plotter.dataformat)
+
+        if plotter.dataformat.name == "isoroc":
+            # Adding extra plotterparameter if not already present for plotter isoroc
+            other_plotterparameter_location = prefix + "/plotters/" + name.split("/")[0] + "/" + \
+                    "other_plotterparameters"
+
+            the_folders = filter(lambda x:\
+                os.path.isdir(os.path.join(other_plotterparameter_location, x)),\
+                os.listdir(other_plotterparameter_location))
+
+            for folder_name in the_folders:
+
+                others_plotterparameter = PlotterParameter.objects.filter(
+                    author=author,
+                    name=folder_name,
+                    version=int(storage.version),
+                    )
+
+                if others_plotterparameter is not None:
+                    param_folder = other_plotterparameter_location + "/" + folder_name
+                    data_file_location = param_folder + "/default_plotterparameter.txt"
+                    short_desc_file_location = param_folder + "/default_plotterparameter_short_description.txt"
+
+                    with open(data_file_location) as plotterparameter_data_file:
+                        plotterparameter_data = simplejson.load(plotterparameter_data_file)
+
+                    with open(short_desc_file_location) as short_desc_data_file:
+                        short_desc = short_desc_data_file.readline().split("\n")[0]
+
+                    plotterparameter = PlotterParameter.objects.create(name=folder_name,
+                    author=author, plotter=plotter, data=simplejson.dumps(plotterparameter_data,
+                      indent=4), short_description=short_desc, sharing = Shareable.PUBLIC)
 
+                    logger.info("Add plotterparameter `%s' ", folder_name)
 
     return True
 
-- 
GitLab