From b2ce05f348e77bd8b878cfa71e59b4d859ea3938 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Sun, 12 Mar 2017 10:54:19 +0100 Subject: [PATCH] Fusion Metrics form only shows metrics that are available --- rowers/forms.py | 19 +++++++++++++------ rowers/views.py | 4 ++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/rowers/forms.py b/rowers/forms.py index d7210ac4..8e35e8c4 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -298,12 +298,19 @@ class FusionMetricChoiceForm(ModelForm): super(FusionMetricChoiceForm, self).__init__(*args, **kwargs) # need to add code to remove "empty" fields - id = self.instance.id - df = dataprep.getrowdata_db(id=id) + if self.instance.id is not None: + id = self.instance.id + df = dataprep.getrowdata_db(id=id)[0] - labeldict = {key:value for key,value in metricchoices} + labeldict = {key:value for key,value in self.fields['columns'].choices} - for label in labeldict: - if df[label].std() == 0: - self.fields['columns'].choices.remove((label, labeldict[label])) + for label in labeldict: + if df.ix[:,label].std() == 0: + try: + formaxlabels.pop(label) + except KeyError: + pass + + metricchoices = list(sorted(formaxlabels.items(), key = lambda x:x[1])) + self.fields['columns'].choices = metricchoices diff --git a/rowers/views.py b/rowers/views.py index 6a5ccf3b..a5df9370 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -5079,7 +5079,7 @@ def workout_summary_restore_view(request,id,message="",successmessage=""): return HttpResponseRedirect(url) # Fuse two workouts -@login_required() +@user_passes_test(ispromember,login_url="/",redirect_field_name=None) def workout_fusion_view(request,id1=0,id2=1): try: w1 = Workout.objects.get(id=id1) @@ -5092,7 +5092,7 @@ def workout_fusion_view(request,id1=0,id2=1): raise Http404("One of the workouts doesn't exist") if request.method == 'POST': - form = FusionMetricChoiceForm(request.POST) + form = FusionMetricChoiceForm(request.POST,instance=w2) if form.is_valid(): cd = form.cleaned_data columns = cd['columns']