From b31416e7d9e9e22b6b411b0f0d59c346026174f4 Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Thu, 23 Aug 2018 11:58:56 +0200
Subject: [PATCH] [plotters][views] Cleanup plot_sample

Better handling of "default". The current code didn't properly
handled absence of defaults.
---
 beat/web/plotters/views.py | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/beat/web/plotters/views.py b/beat/web/plotters/views.py
index 361d2e1a1..6021c9315 100644
--- a/beat/web/plotters/views.py
+++ b/beat/web/plotters/views.py
@@ -407,29 +407,28 @@ def plot_sample(request):
 
 
     # Collect the data for the plot, check compatibility
-    default = None
-
-    # check compatibility, fill up defaults
-    if default is None:
-        default = DefaultPlotter.objects.filter(plotter=final_plotter)
+    default = DefaultPlotter.objects.filter(plotter=final_plotter)
 
-        if not default and not final_plotter:
-            message = 'No plotter specified and no default for plot format %s' % final_plotter.fullname()
-            return HttpResponseBadRequest(message)
+    if not default.count() and not final_plotter:
+        message = 'No plotter specified and no default for plot format %s' % final_plotter.fullname()
+        return HttpResponseBadRequest(message)
 
+    # check compatibility, fill up defaults
+    if default.count():
         default = default[0] #get the first and only
 
         # set defaults, if specific values have not already been set
         if not final_plotter: final_plotter = default.plotter
+    else:
+        default = None
 
-        if corefmt is None: #loads it once
-            corefmt = final_plotter.core_format()
+    if corefmt is None: #loads it once
+        corefmt = final_plotter.core_format()
 
     ## loads the data, for that particular result
     parsed = simplejson.loads(use['sample_data'])
     sample_data = corefmt.type().from_dict(parsed, casting='unsafe')
 
-
     # checks the plotter is valid
     core_plotter = final_plotter.core()
     if not core_plotter.valid:
@@ -439,7 +438,7 @@ def plot_sample(request):
 
     # resolves parameters, in order of priority
     final_parameters = {}
-    if default.parameter: #fills-up defaults for the type
+    if default and default.parameter: #fills-up defaults for the type
         final_parameters.update(simplejson.loads(default.parameter.data))
     if user_parameter: #fills-up defaults from the user set
         final_parameters.update(simplejson.loads(user_parameter.data))
-- 
GitLab