Switch to unified view

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