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