--- 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')