|
a |
|
b/OSSEval/IMDBMovieApp/views.py |
|
|
1 |
# This Source Code Form of OSSEval is subject to the terms of the GNU AFFERO
|
|
|
2 |
# GENERAL PUBLIC LICENSE, v. 3.0. If a copy of the AGPL was not
|
|
|
3 |
# distributed with this file, You can obtain one at http://www.gnu.org/licenses/agpl.txt
|
|
|
4 |
#
|
|
|
5 |
# OSSeval is powered by the SOS Open Source AGPL edition.
|
|
|
6 |
# The AGPL requires that you do not remove the SOS Open Source attribution and copyright
|
|
|
7 |
# notices from the user interface (see section 5.d below).
|
|
|
8 |
|
|
|
9 |
# OSSEval Copyright 2014 Bitergium SLL
|
|
|
10 |
# SOS Open Source Copyright 2012 Roberto Galoppini
|
|
|
11 |
# Author: Davide Galletti
|
|
|
12 |
|
|
|
13 |
|
|
|
14 |
from pprint import pformat
|
|
|
15 |
|
|
|
16 |
from django.conf import settings
|
|
|
17 |
from django.contrib import messages
|
|
|
18 |
from django.core.urlresolvers import reverse
|
|
|
19 |
from django.http import HttpResponseRedirect, HttpResponse
|
|
|
20 |
from django.shortcuts import render, get_object_or_404
|
|
|
21 |
|
|
|
22 |
from analysis.models import Analysis, Instance
|
|
|
23 |
from IMDBMovieApp.models import IMDBMovie
|
|
|
24 |
import IMDBMovieApp
|
|
|
25 |
from imdb import IMDBProxy
|
|
|
26 |
from forms import SearchForm
|
|
|
27 |
|
|
|
28 |
def instance_list_html(request, analysis_id):
|
|
|
29 |
'''
|
|
|
30 |
Part of the required interface
|
|
|
31 |
'''
|
|
|
32 |
analysis = Analysis.objects.get(pk=analysis_id)
|
|
|
33 |
context = {'analysis': analysis}
|
|
|
34 |
return render(request, 'IMDBMovieApp/detail.html', context)
|
|
|
35 |
|
|
|
36 |
def search_html_form(request, analysis_id):
|
|
|
37 |
'''
|
|
|
38 |
Part of the required interface
|
|
|
39 |
'''
|
|
|
40 |
form = SearchForm(initial={'analysis_id': analysis_id}) # An unbound form
|
|
|
41 |
return render(request, 'IMDBMovieApp/search.html', {'form': form})
|
|
|
42 |
|
|
|
43 |
def search_html(request):
|
|
|
44 |
'''
|
|
|
45 |
Part of the required interface
|
|
|
46 |
'''
|
|
|
47 |
form = SearchForm(request.POST)
|
|
|
48 |
if form.is_valid(): # All validation rules pass
|
|
|
49 |
title = str(form.cleaned_data['title'])
|
|
|
50 |
analysis_id = str(form.cleaned_data['analysis_id'])
|
|
|
51 |
movies = []
|
|
|
52 |
movies += IMDBProxy.search(title)
|
|
|
53 |
|
|
|
54 |
return render(request, 'IMDBMovieApp/search_results.html', {'movies': movies, 'analysis_id': analysis_id})
|
|
|
55 |
|
|
|
56 |
def IMDBMovie_delete(request, movie_id, analysis_id):
|
|
|
57 |
movie = get_object_or_404(IMDBMovie, pk=movie_id)
|
|
|
58 |
i = movie.instance
|
|
|
59 |
movie.delete()
|
|
|
60 |
i.delete()
|
|
|
61 |
|
|
|
62 |
return HttpResponseRedirect(reverse('analysis_detail', args=(analysis_id,)))
|
|
|
63 |
|
|
|
64 |
def IMDBMovie_add(request):
|
|
|
65 |
analysis_id = int(request.POST.get("analysis_id", ""))
|
|
|
66 |
# I strip the movie name as it is used in jquery tabs;
|
|
|
67 |
# if names contain \n that would break jquery tabs rendering
|
|
|
68 |
# TODO: The above issue is still active; don't know what it triggers it though
|
|
|
69 |
title = request.POST.get("title", "").strip()
|
|
|
70 |
imdb_id = request.POST.get("imdb_id", "")
|
|
|
71 |
analysis = get_object_or_404(Analysis, pk=analysis_id)
|
|
|
72 |
instance=Instance.objects.create(name=title, name_for_search="", analysis=analysis)
|
|
|
73 |
osp=IMDBMovie.objects.create(title=title, instance=instance, imdb_id=imdb_id)
|
|
|
74 |
return HttpResponseRedirect(reverse('analysis_detail', args=(analysis_id,)))
|
|
|
75 |
|
|
|
76 |
def IMDBMovieFromResultList_detail(request):
|
|
|
77 |
movie_identifier = request.POST.get("movie_identifier", "")
|
|
|
78 |
id_forge = int(request.POST.get("id_forge", ""))
|
|
|
79 |
pf = IMDBMovie(movie_identifier=movie_identifier, forge_id=id_forge)
|
|
|
80 |
osprojectforge_info = pf.getProjectInfo()
|
|
|
81 |
osprojectforge_info_nice_print = pformat(osprojectforge_info)
|
|
|
82 |
return render(request, 'OSProject/osprojectforge_detail.html', {'osprojectforge_info': osprojectforge_info, 'osprojectforge_info_nice_print': osprojectforge_info_nice_print})
|
|
|
83 |
|
|
|
84 |
def IMDBMovie_detail(request, imdb_id):
|
|
|
85 |
imdb_movie = get_object_or_404(IMDBMovie, pk=imdb_id)
|
|
|
86 |
imdb_movie_info = imdb_movie.getProjectInfo()
|
|
|
87 |
imdb_movie_info_nice_print = pformat(imdb_movie_info)
|
|
|
88 |
return render(request, 'IMDBMovie/imdb_movie_detail.html', {'osprojectforge_info': imdb_movie_info, 'osprojectforge_info_nice_print': imdb_movie_info_nice_print})
|
|
|
89 |
|
|
|
90 |
def OSProject_detail(request, osproject_id):
|
|
|
91 |
osp = get_object_or_404(IMDBMovie, pk=osproject_id)
|
|
|
92 |
osproject_info = osp.getInstanceInfo()
|
|
|
93 |
osproject_info_nice_print = pformat(osproject_info)
|
|
|
94 |
return render(request, 'OSProject/osproject_detail.html', {'osprojectforge_info': osproject_info, 'osprojectforge_info_nice_print': osproject_info_nice_print})
|