Switch to side-by-side view

--- a/OSSEval/analysis/views.py
+++ b/OSSEval/analysis/views.py
@@ -9,27 +9,26 @@
 
 from forms import AnalysisForm, UploadFileForm, ImportChoice
 from analysis.models import Analysis, Configuration, Instance, UploadedFile, Answer
-from methodology.models import Methodology, MethodologyVersion, Question
-from OSSEval.utils import xmlMinidom, TrivialJSONEncoder
+from methodology.models import Methodology, MethodologyVersion, Question, Page
+from OSSEval.utils import xmlMinidom, TrivialJSONEncoder, SearchEngine
 
 def analysis_new(request, analysis_id=0):
     if request.method == "POST":
+        form = AnalysisForm(request.POST)
+        if form.is_valid():
+            model_instance = form.save()
+            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(instance = analysis)
+            return render(request, 'analysis/analysis_new.html', {'form': form, 'analysis': analysis})
         else:
-            form = AnalysisForm(request.POST)
-            if form.is_valid():
-                cfg = Configuration.objects.get(pk=1)
-                model_instance = form.save()
-                model_instance.created = timezone.now()
-#                 model_instance.methodology_version = cfg.default_methodology_version
-#                 print "model_instance.methodology_version:  " + str(model_instance.methodology_version.id)
-                model_instance.save()
-                return HttpResponseRedirect(reverse('analysis_list'))
-    else:
-        form = AnalysisForm()
-    return render(request, 'analysis/analysis_new.html', {'form': form})
+            form = AnalysisForm()
+            return render(request, 'analysis/analysis_new.html', {'form': form})
     
 
 class AnalysisList(ListView):
@@ -38,7 +37,6 @@
     
 def detail(request, analysis_id):
     analysis = get_object_or_404(Analysis, pk=analysis_id)
-
     entity = analysis.methodology_version.methodology.entity
     
     exec("from " + entity.actual_entity_app + ".views import search_html_form, instance_list_html")
@@ -84,6 +82,51 @@
     id_instance = request.GET.get("id_instance", "")
     answers = Answer.objects.filter(instance_id=id_instance)
     return HttpResponse(TrivialJSONEncoder().encode(list(answers)))
+
+def get_metadata(request):
+    metadata = []
+    id_instance = request.GET.get("id_instance", "")
+    instance = Instance.objects.get(pk = id_instance)
+    entity = instance.analysis.methodology_version.methodology.entity
+    #list of questions; just a plain list, I do not care in which page they are
+    list_of_questions = [] 
+    pages = Page.objects.filter(methodology_version = instance.analysis.methodology_version)
+    for page in pages:
+        list_of_questions += page.questions()
+    #all metadata about this instance
+    i = instance.actual_instance.getInstanceInfo()
+    
+    #eval python; python code assumes that all the information is in a structure called "i" which stands for "instance"
+    for question in list_of_questions:
+        description = ""
+        value = -1
+        exec(question.eval_description)
+        exec(question.eval_value)
+        #run queries on search engine
+        for query in question.query_set.all():
+            site = ""
+            print query.eval_text
+            exec(query.eval_text)
+            print q
+            print query.eval_site
+            exec(query.eval_site)
+            print site
+            search_count = str(SearchEngine.search_count(q, site))
+            search_url = SearchEngine.search_url(q, site)
+            print "get_metadata search_url: " + search_url
+            search_engine_name = SearchEngine.search__engine_name()
+            description += "<a target='_blank' href='" + search_url + "'>'" + SearchEngine.readable_query(q, site) + "' on " + search_engine_name + ": (" + search_count + " results)</a><br>"
+        q = {}
+        q["question_id"] = question.id
+        q["description"] = description
+        q["value"] = value
+        metadata.append(q)
+    
+    #restituire la lista delle domande con le elaborazioni allegate
+    
+    
+#     answers = Answer.objects.filter(instance_id=id_instance)
+    return HttpResponse(TrivialJSONEncoder().encode(list(metadata)))
 
 def export(request, analysis_id):
     a = get_object_or_404(Analysis, pk=analysis_id)
@@ -159,6 +202,7 @@
     analysis_xml = xmldoc.getElementsByTagName('Analysis')[0]
     if import_analysis:
         a.from_xml(analysis_xml, always_insert)
+        return HttpResponseRedirect(reverse('analysis_detail', args=(a.id,)))
     else:
         a.id = analysis_xml.attributes["Id"].firstChild.data
-    return HttpResponseRedirect(reverse('analysis_detail', args=(a.id,)))
+        return HttpResponseRedirect(reverse('analysis_list'))