Switch to side-by-side view

--- a
+++ b/OSSEval/IMDBMovieApp/views.py
@@ -0,0 +1,94 @@
+# This Source Code Form of OSSEval is subject to the terms of the GNU AFFERO
+# GENERAL PUBLIC LICENSE, v. 3.0. If a copy of the AGPL was not
+# distributed with this file, You can obtain one at http://www.gnu.org/licenses/agpl.txt
+#
+# OSSeval is powered by the SOS Open Source AGPL edition.
+#  The AGPL requires that you do not remove the SOS Open Source attribution and copyright 
+#  notices from the user interface (see section 5.d below).
+
+# OSSEval Copyright 2014 Bitergium SLL
+# SOS Open Source Copyright 2012 Roberto Galoppini
+# Author: Davide Galletti 
+
+
+from pprint import pformat
+
+from django.conf import settings
+from django.contrib import messages
+from django.core.urlresolvers import reverse
+from django.http import HttpResponseRedirect, HttpResponse
+from django.shortcuts import render, get_object_or_404
+
+from analysis.models import Analysis, Instance
+from IMDBMovieApp.models import IMDBMovie
+import IMDBMovieApp
+from imdb import IMDBProxy
+from forms import SearchForm
+
+def instance_list_html(request, analysis_id):
+    '''
+    Part of the required interface
+    '''
+    analysis = Analysis.objects.get(pk=analysis_id)
+    context = {'analysis': analysis}
+    return render(request, 'IMDBMovieApp/detail.html', context)
+
+def search_html_form(request, analysis_id):
+    '''
+    Part of the required interface
+    '''
+    form = SearchForm(initial={'analysis_id': analysis_id}) # An unbound form
+    return render(request, 'IMDBMovieApp/search.html', {'form': form})
+
+def search_html(request):
+    '''
+    Part of the required interface
+    '''
+    form = SearchForm(request.POST)
+    if form.is_valid(): # All validation rules pass
+        title = str(form.cleaned_data['title'])
+        analysis_id = str(form.cleaned_data['analysis_id'])
+        movies = []
+        movies += IMDBProxy.search(title)
+        
+        return render(request, 'IMDBMovieApp/search_results.html', {'movies': movies, 'analysis_id': analysis_id})
+
+def IMDBMovie_delete(request, movie_id, analysis_id):
+    movie = get_object_or_404(IMDBMovie, pk=movie_id)
+    i = movie.instance
+    movie.delete()
+    i.delete()
+    
+    return HttpResponseRedirect(reverse('analysis_detail', args=(analysis_id,)))
+
+def IMDBMovie_add(request):
+    analysis_id = int(request.POST.get("analysis_id", ""))
+    #  I strip the movie name as it is used in jquery tabs; 
+    #  if names contain \n that would break jquery tabs rendering
+    #  TODO: The above issue is still active; don't know what it triggers it though
+    title = request.POST.get("title", "").strip()
+    imdb_id = request.POST.get("imdb_id", "")
+    analysis = get_object_or_404(Analysis, pk=analysis_id)
+    instance=Instance.objects.create(name=title, name_for_search="", analysis=analysis)
+    osp=IMDBMovie.objects.create(title=title, instance=instance, imdb_id=imdb_id)
+    return HttpResponseRedirect(reverse('analysis_detail', args=(analysis_id,)))
+
+def IMDBMovieFromResultList_detail(request):
+    movie_identifier = request.POST.get("movie_identifier", "")
+    id_forge = int(request.POST.get("id_forge", ""))
+    pf = IMDBMovie(movie_identifier=movie_identifier, forge_id=id_forge)
+    osprojectforge_info = pf.getProjectInfo()
+    osprojectforge_info_nice_print = pformat(osprojectforge_info) 
+    return render(request, 'OSProject/osprojectforge_detail.html', {'osprojectforge_info': osprojectforge_info, 'osprojectforge_info_nice_print': osprojectforge_info_nice_print})
+
+def IMDBMovie_detail(request, imdb_id):
+    imdb_movie = get_object_or_404(IMDBMovie, pk=imdb_id)
+    imdb_movie_info = imdb_movie.getProjectInfo()
+    imdb_movie_info_nice_print = pformat(imdb_movie_info) 
+    return render(request, 'IMDBMovie/imdb_movie_detail.html', {'osprojectforge_info': imdb_movie_info, 'osprojectforge_info_nice_print': imdb_movie_info_nice_print})
+
+def OSProject_detail(request, osproject_id):
+    osp = get_object_or_404(IMDBMovie, pk=osproject_id)
+    osproject_info = osp.getInstanceInfo()
+    osproject_info_nice_print = pformat(osproject_info) 
+    return render(request, 'OSProject/osproject_detail.html', {'osprojectforge_info': osproject_info, 'osprojectforge_info_nice_print': osproject_info_nice_print})