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