|
a |
|
b/OSSEval/OSProject/models.py |
|
|
1 |
from django.db import models
|
|
|
2 |
#from views import search_html, instance_list_html
|
|
|
3 |
from ohloh import OhlohProxy
|
|
|
4 |
from flossmole import FSF, FC, GC, GH
|
|
|
5 |
from utils import Forges
|
|
|
6 |
|
|
|
7 |
class OSProject(models.Model):
|
|
|
8 |
"""
|
|
|
9 |
Must be the same name of the Django app
|
|
|
10 |
"""
|
|
|
11 |
name = models.CharField(max_length=200)
|
|
|
12 |
instance = models.OneToOneField('analysis.Instance', related_name='actual_instance', primary_key=True)
|
|
|
13 |
|
|
|
14 |
def __unicode__(self):
|
|
|
15 |
return self.name + " - " + self.instance.name
|
|
|
16 |
|
|
|
17 |
def getProjectInfo(self):
|
|
|
18 |
osprojectforge_info = {}
|
|
|
19 |
for ospf in self.osprojectforge_set.all():
|
|
|
20 |
osprojectforge_info[ospf.forge.name] = ospf.getProjectInfo()
|
|
|
21 |
return osprojectforge_info
|
|
|
22 |
|
|
|
23 |
class Forge(models.Model):
|
|
|
24 |
name = models.CharField(max_length=50)
|
|
|
25 |
url = models.CharField(max_length=200)
|
|
|
26 |
os_projects = models.ManyToManyField(OSProject, through='OSProjectForge', blank=True)
|
|
|
27 |
def __unicode__(self):
|
|
|
28 |
return self.name + " - " + self.url
|
|
|
29 |
|
|
|
30 |
class OSProjectForge(models.Model):
|
|
|
31 |
name = models.CharField(max_length=200)
|
|
|
32 |
forge = models.ForeignKey(Forge)
|
|
|
33 |
os_project = models.ForeignKey(OSProject)
|
|
|
34 |
identifier_in_forge = models.CharField(max_length=200)
|
|
|
35 |
datasource_id = models.IntegerField()
|
|
|
36 |
def __unicode__(self):
|
|
|
37 |
return self.name + " - " + self.forge.name
|
|
|
38 |
def getProjectInfo(self):
|
|
|
39 |
if self.forge.id == Forges.OHLOH:
|
|
|
40 |
osprojectforge_info = OhlohProxy.getProjectInfo(self.identifier_in_forge)
|
|
|
41 |
if self.forge.id == Forges.FC:
|
|
|
42 |
osprojectforge_info = FC.getProjectInfo(self.identifier_in_forge)
|
|
|
43 |
if self.forge.id == Forges.FSF:
|
|
|
44 |
osprojectforge_info = FSF.getProjectInfo(self.identifier_in_forge)
|
|
|
45 |
if self.forge.id == Forges.GC:
|
|
|
46 |
osprojectforge_info = GC.getProjectInfo(self.identifier_in_forge)
|
|
|
47 |
if self.forge.id == Forges.GH:
|
|
|
48 |
osprojectforge_info = GH.getProjectInfo(self.identifier_in_forge)
|
|
|
49 |
return osprojectforge_info
|
|
|
50 |
|
|
|
51 |
|
|
|
52 |
class OSSConfiguration(models.Model):
|
|
|
53 |
flossmole_locale = models.BooleanField()
|
|
|
54 |
ohloh_api_key = models.CharField(max_length = 100)
|
|
|
55 |
local_record_limit = models.IntegerField()
|
|
|
56 |
remote_record_limit = models.IntegerField()
|
|
|
57 |
ohloh_record_limit = models.IntegerField()
|