Switch to unified view

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