|
a |
|
b/OSSEval/OSProject/views.py |
|
|
1 |
from pprint import pformat
|
|
|
2 |
|
|
|
3 |
from django.contrib import messages
|
|
|
4 |
from django.core.urlresolvers import reverse
|
|
|
5 |
from django.http import HttpResponseRedirect
|
|
|
6 |
from django.shortcuts import render, get_object_or_404
|
|
|
7 |
|
|
|
8 |
from analysis.models import Analysis, Instance
|
|
|
9 |
from forms import SearchForm
|
|
|
10 |
from flossmole import FSF, FC, GC, GH
|
|
|
11 |
from OSProject.models import OSProjectForge, OSProject, Forge
|
|
|
12 |
from ohloh import OhlohProxy
|
|
|
13 |
from utils import Forges
|
|
|
14 |
|
|
|
15 |
def instance_list_html(request, analysis_id):
|
|
|
16 |
'''
|
|
|
17 |
Part of the required interface
|
|
|
18 |
'''
|
|
|
19 |
analysis = Analysis.objects.get(pk=analysis_id)
|
|
|
20 |
context = {'analysis': analysis}
|
|
|
21 |
return render(request, 'OSProject/detail.html', context)
|
|
|
22 |
|
|
|
23 |
def search_html_form(request, analysis_id):
|
|
|
24 |
'''
|
|
|
25 |
Part of the required interface
|
|
|
26 |
'''
|
|
|
27 |
form = SearchForm(initial={'analysis_id': analysis_id}) # An unbound form
|
|
|
28 |
return render(request, 'OSProject/search.html', {'form': form})
|
|
|
29 |
|
|
|
30 |
def search_html(request):
|
|
|
31 |
'''
|
|
|
32 |
Part of the required interface
|
|
|
33 |
'''
|
|
|
34 |
form = SearchForm(request.POST)
|
|
|
35 |
if form.is_valid(): # All validation rules pass
|
|
|
36 |
target = int(str(form.cleaned_data['target']))
|
|
|
37 |
name = str(form.cleaned_data['name'])
|
|
|
38 |
analysis_id = str(form.cleaned_data['analysis_id'])
|
|
|
39 |
projects = []
|
|
|
40 |
if target == Forges.FC or target == Forges.ALL:
|
|
|
41 |
projects += FC.search(name)
|
|
|
42 |
if target == Forges.FSF or target == Forges.ALL:
|
|
|
43 |
projects += FSF.search(name)
|
|
|
44 |
if target == Forges.GC or target == Forges.ALL:
|
|
|
45 |
projects += GC.search(name)
|
|
|
46 |
if target == Forges.GH or target == Forges.ALL:
|
|
|
47 |
projects += GH.search(name)
|
|
|
48 |
if target == Forges.OHLOH or target == Forges.ALL:
|
|
|
49 |
projects += OhlohProxy.search(name)
|
|
|
50 |
|
|
|
51 |
return render(request, 'OSProject/search_results.html', {'projects': projects, 'analysis_id': analysis_id})
|
|
|
52 |
|
|
|
53 |
def OSProjectForge_delete(request, osprojectforge_id, analysis_id):
|
|
|
54 |
pf = get_object_or_404(OSProjectForge, pk=osprojectforge_id)
|
|
|
55 |
osp = pf.os_project
|
|
|
56 |
i = osp.instance
|
|
|
57 |
pf.delete()
|
|
|
58 |
if len(osp.osprojectforge_set.all()) == 0:
|
|
|
59 |
osp.delete()
|
|
|
60 |
i.delete()
|
|
|
61 |
|
|
|
62 |
return HttpResponseRedirect(reverse('analysis_detail', args=(analysis_id,)))
|
|
|
63 |
|
|
|
64 |
def OSProjectForge_add(request):
|
|
|
65 |
#TODO: check there's just one per forge
|
|
|
66 |
analysis_id = int(request.POST.get("analysis_id", ""))
|
|
|
67 |
id_forge = int(request.POST.get("id_forge", ""))
|
|
|
68 |
datasource_id = request.POST.get("datasource_id", "")
|
|
|
69 |
project_name = request.POST.get("project_name", "")
|
|
|
70 |
identifier_in_forge = request.POST.get("identifier_in_forge", "")
|
|
|
71 |
id_selected_instance = int(request.POST.get("id_selected_instance", ""))
|
|
|
72 |
#id_selected_instance is -1 if I have to create a new instance; otherwise it tells to which instance I should add it
|
|
|
73 |
if id_selected_instance > 0:
|
|
|
74 |
instance = Instance.objects.get(pk=id_selected_instance)
|
|
|
75 |
osp=OSProject.objects.get(instance = instance)
|
|
|
76 |
for ospf in osp.osprojectforge_set.all():
|
|
|
77 |
if ospf.forge.id == id_forge:
|
|
|
78 |
messages.add_message(request, messages.INFO, 'Hello world.')
|
|
|
79 |
print ('Hello world.')
|
|
|
80 |
return HttpResponseRedirect(reverse('analysis_detail', args=(analysis_id,)))
|
|
|
81 |
else:
|
|
|
82 |
analysis = get_object_or_404(Analysis, pk=analysis_id)
|
|
|
83 |
instance=Instance.objects.create(name=project_name, name_for_search="", analysis=analysis)
|
|
|
84 |
osp=OSProject.objects.create(name=project_name, instance=instance)
|
|
|
85 |
forge=Forge.objects.get(pk=id_forge)
|
|
|
86 |
pf=OSProjectForge(name=project_name, os_project=osp, forge=forge, identifier_in_forge=identifier_in_forge, datasource_id=datasource_id)
|
|
|
87 |
pf.save()
|
|
|
88 |
return HttpResponseRedirect(reverse('analysis_detail', args=(analysis_id,)))
|
|
|
89 |
|
|
|
90 |
|
|
|
91 |
def OSProjectForgeFromResultList_detail(request):
|
|
|
92 |
identifier_in_forge = request.POST.get("identifier_in_forge", "")
|
|
|
93 |
id_forge = int(request.POST.get("id_forge", ""))
|
|
|
94 |
pf = OSProjectForge(identifier_in_forge=identifier_in_forge, forge_id=id_forge)
|
|
|
95 |
osprojectforge_info = pf.getProjectInfo()
|
|
|
96 |
osprojectforge_info_nice_print = pformat(osprojectforge_info)
|
|
|
97 |
return render(request, 'OSProject/osprojectforge_detail.html', {'osprojectforge_info': osprojectforge_info, 'osprojectforge_info_nice_print': osprojectforge_info_nice_print})
|
|
|
98 |
|
|
|
99 |
def OSProjectForge_detail(request, osprojectforge_id):
|
|
|
100 |
pf = get_object_or_404(OSProjectForge, pk=osprojectforge_id)
|
|
|
101 |
osprojectforge_info = pf.getProjectInfo()
|
|
|
102 |
osprojectforge_info_nice_print = pformat(osprojectforge_info)
|
|
|
103 |
return render(request, 'OSProject/osprojectforge_detail.html', {'osprojectforge_info': osprojectforge_info, 'osprojectforge_info_nice_print': osprojectforge_info_nice_print})
|
|
|
104 |
|
|
|
105 |
def OSProject_detail(request, osproject_id):
|
|
|
106 |
osp = get_object_or_404(OSProject, pk=osproject_id)
|
|
|
107 |
osproject_info = osp.getProjectInfo()
|
|
|
108 |
osproject_info_nice_print = pformat(osproject_info)
|
|
|
109 |
return render(request, 'OSProject/osproject_detail.html', {'osprojectforge_info': osproject_info, 'osprojectforge_info_nice_print': osproject_info_nice_print})
|