Switch to side-by-side view

--- a/OSSEval/analysis/views.py
+++ b/OSSEval/analysis/views.py
@@ -27,7 +27,42 @@
 #from methodology.models import Methodology, MethodologyVersion, Question, Page
 from OSSEval.utils import xmlMinidom, TrivialJSONEncoder, SearchEngine
 
-def analysis_new(request, analysis_id=0):
+def analysis_new(request):
+    if request.method == "POST":
+        form = AnalysisForm(request.POST)
+        if form.is_valid():
+            if reverse('analysis_new') in request.META['HTTP_REFERER']:
+                # creating a new 
+                model_instance = form.save()
+                model_instance.visible = True
+                weight_scenarios = model_instance.methodology_version.weightscenario_set.filter(active=True) 
+                if len(weight_scenarios) == 1:
+                    model_instance.weight_scenario = weight_scenarios[0]
+                else:
+                    raise Exception("There should be exactly one active WeightScenario for MethodologyVersion " + str(model_instance.methodology_version.id))
+                model_instance.protected = False
+                model_instance.created = timezone.now()
+                model_instance.save()
+                return HttpResponseRedirect(reverse('analysis_detail', args=(model_instance.pk,)))
+            else:
+                # editing an existing one
+                id = request.META['HTTP_REFERER'].rsplit('/')[len(request.META['HTTP_REFERER'].rsplit('/'))-1]
+                a = Analysis.objects.get(pk = id)
+                a.name = form.cleaned_data['name']
+                a.description = form.cleaned_data['description']
+                a.comment = form.cleaned_data['comment']
+                a.created = form.cleaned_data['created']
+                a.methodology_version = form.cleaned_data['methodology_version']
+                a.user_login = form.cleaned_data['user_login']
+                a.visible = form.cleaned_data['visible']
+                a.protected = form.cleaned_data['protected']
+                a.save()
+                return HttpResponseRedirect(reverse('analysis_detail', args=(a.id,)))
+    else:
+        form = AnalysisForm()
+        return render(request, 'analysis/analysis_new.html', {'form': form})
+    
+def analysis_edit(request, analysis_id):
     if request.method == "POST":
         form = AnalysisForm(request.POST)
         if form.is_valid():
@@ -42,16 +77,11 @@
             model_instance.created = timezone.now()
             model_instance.save()
             return HttpResponseRedirect(reverse('analysis_list'))
-        return render(request, 'analysis/analysis_new.html', {'form': form})
-    else:
-        if analysis_id>0:
-            analysis = get_object_or_404(Analysis, pk=analysis_id)
-            form = AnalysisForm(request.POST or None, instance = analysis)
-            return render(request, 'analysis/analysis_new.html', {'form': form, 'analysis': analysis})
-        else:
-            form = AnalysisForm()
-            return render(request, 'analysis/analysis_new.html', {'form': form})
-    
+        return render(request, 'analysis/analysis_edit.html', {'form': form})
+    else:
+        analysis = get_object_or_404(Analysis, pk=analysis_id)
+        form = AnalysisForm(request.POST or None, instance = analysis)
+        return render(request, 'analysis/analysis_edit.html', {'form': form, 'analysis': analysis})
 
 class AnalysisList(ListView):
     queryset = Analysis.objects.order_by('-created')