Skip to content

Commit 1a148b3

Browse files
authored
Merge pull request #193 from ponder-lab/ypaing/181-refactor-models-views-into-packages
refactoring models and views file into more modular packages/files
2 parents fb87177 + 9e87525 commit 1a148b3

14 files changed

+659
-619
lines changed

ponder/models.py

-186
This file was deleted.

ponder/models/__init__.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from .bug_fix import BugFix
2+
from .categorization import Categorization, Categorizer
3+
from .commit import Commit, CommitDetail, Dataset
4+
from .problem import ProblemCategory, ProblemCause, ProblemFix, ProblemSymptom
5+
from .repository import Repository
6+
from django.contrib.auth.models import User

ponder/models/bug_fix.py

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from django.db import models
2+
from .commit import Commit
3+
4+
class BugFix(models.Model):
5+
sha = models.CharField(max_length=40, blank=False, null=False, verbose_name='SHA')
6+
is_func_fix = models.BooleanField()
7+
problem_category = models.ForeignKey('ProblemCategory', models.DO_NOTHING, db_column='problem_category', blank=True, null=True)
8+
category_comment = models.TextField(blank=True, null=True)
9+
problem_cause = models.ForeignKey('ProblemCause', models.DO_NOTHING, db_column='problem_cause', blank=True, null=True)
10+
cause_comment = models.TextField(blank=True, null=True)
11+
problem_symptom = models.ForeignKey('ProblemSymptom', models.DO_NOTHING, db_column='problem_symptom', blank=True, null=True)
12+
symptom_comment = models.TextField(blank=True, null=True)
13+
problem_fix = models.ForeignKey('ProblemFix', models.DO_NOTHING, db_column='problem_fix', blank=True, null=True)
14+
fix_comment = models.TextField(blank=True, null=True)
15+
should_discuss = models.BooleanField(blank=True, null=True)
16+
17+
class Meta:
18+
db_table = 'bug_fixes'
19+
20+
def get_id(self):
21+
return "%i/" % self.id
22+
23+
def __str__(self):
24+
return "%s" % self.id
25+
26+
def get_sha(self):
27+
project = Commit.objects.values('project').filter(sha=self.sha)[0]
28+
return "https://github.com/"+str(project['project'])+"/commit/"+str(self.sha)

ponder/models/categorization.py

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
from django.db import models
2+
from django.contrib.auth.models import User
3+
from .commit import Commit
4+
5+
class Categorization(models.Model):
6+
sha = models.CharField(max_length=40, blank=False, null=False)
7+
is_func_fix = models.BooleanField()
8+
func_fix_comment = models.TextField(blank=True, null=True)
9+
problem_category = models.ForeignKey('ProblemCategory', models.DO_NOTHING, db_column='problem_category', blank=True, null=True)
10+
category_comment = models.TextField(blank=True, null=True)
11+
problem_cause = models.ForeignKey('ProblemCause', models.DO_NOTHING, db_column='problem_cause', blank=True, null=True)
12+
cause_comment = models.TextField(blank=True, null=True)
13+
problem_symptom = models.ForeignKey('ProblemSymptom', models.DO_NOTHING, db_column='problem_symptom', blank=True, null=True)
14+
symptom_comment = models.TextField(blank=True, null=True)
15+
problem_fix = models.ForeignKey('ProblemFix', models.DO_NOTHING, db_column='problem_fix', blank=True, null=True)
16+
fix_comment = models.TextField(blank=True, null=True)
17+
categorizer = models.ForeignKey('Categorizer', models.DO_NOTHING, db_column='categorizer')
18+
should_discuss = models.BooleanField(blank=True, null=True)
19+
bug_fix = models.ForeignKey('BugFix', models.DO_NOTHING, blank=True, null=True)
20+
21+
class Meta:
22+
db_table = 'categorizations'
23+
24+
def get_sha(self):
25+
project = Commit.objects.values('project').filter(sha=self.sha)[0]
26+
return "https://github.com/"+str(project['project'])+"/commit/"+str(self.sha)
27+
28+
def get_absolute_url(self):
29+
return "bug_fixes/"+str(self.bug_fix)
30+
31+
def email_categorizer(self):
32+
user = User.objects.get(username=self.categorizer)
33+
return "mailto:" + user.email
34+
35+
36+
class Categorizer(models.Model):
37+
name = models.CharField(max_length=254)
38+
initials = models.CharField(unique=True, max_length=3)
39+
user = models.OneToOneField(User, to_field="username", db_column='user', on_delete=models.DO_NOTHING)
40+
41+
class Meta:
42+
db_table = 'categorizers'
43+
44+
def __str__(self):
45+
return str(self.user)

ponder/models/commit.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from django.db import models
2+
3+
class CommitDetail(models.Model):
4+
sha = models.CharField(max_length=40, blank=False, null=False, verbose_name='SHA')
5+
language = models.CharField(max_length=2, blank=True, null=True)
6+
file_name = models.CharField(max_length=100, blank=True, null=True)
7+
is_test = models.IntegerField(blank=True, null=True)
8+
method_name = models.CharField(max_length=51, blank=True, null=True)
9+
tf_function_adds = models.IntegerField(db_column='tf.function_adds', blank=True, null=True)
10+
tf_function_dels = models.IntegerField(db_column='tf.function_dels', blank=True, null=True)
11+
total_adds = models.IntegerField(blank=True, null=True)
12+
total_dels = models.IntegerField(blank=True, null=True)
13+
warning_alert = models.IntegerField(blank=True, null=True)
14+
15+
class Meta:
16+
db_table = 'commit_details'
17+
18+
19+
class Commit(models.Model):
20+
project = models.CharField(max_length=41)
21+
sha = models.CharField(max_length=40, blank=False, null=False)
22+
author = models.CharField(max_length=25, blank=True, null=True)
23+
author_email = models.CharField(max_length=47, blank=True, null=True)
24+
commit_date = models.DateField(blank=True, null=True)
25+
dataset = models.ForeignKey('Dataset', models.DO_NOTHING, db_column='dataset')
26+
rounds = models.IntegerField(blank=True, null=True)
27+
28+
class Meta:
29+
db_table = 'commits'
30+
31+
def __str__(self):
32+
return self.sha
33+
34+
def get_project(self):
35+
return "https://github.com/"+str(self.project)
36+
37+
def email_author(self):
38+
return "mailto:" + self.author_email.strip('<>')
39+
40+
def get_commit(self):
41+
return "https://github.com/"+str(self.project)+"/commit/"+str(self.sha)
42+
43+
44+
class Dataset(models.Model):
45+
name = models.CharField(unique=True, max_length=254)
46+
description = models.CharField(max_length=254)
47+
48+
class Meta:
49+
db_table = 'datasets'
50+
51+
def __str__(self):
52+
return self.name

ponder/models/problem.py

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
from django.db import models
2+
3+
class ProblemCategory(models.Model):
4+
category = models.CharField(unique=True, max_length=254)
5+
description = models.TextField(blank=True, null=True)
6+
7+
class Meta:
8+
db_table = 'problem_categories'
9+
10+
def __str__(self):
11+
return self.category
12+
13+
14+
class ProblemCause(models.Model):
15+
cause = models.CharField(unique=True, max_length=254)
16+
description = models.TextField(blank=True, null=True)
17+
18+
class Meta:
19+
db_table = 'problem_causes'
20+
21+
def __str__(self):
22+
return self.cause
23+
24+
25+
class ProblemFix(models.Model):
26+
fix = models.CharField(unique=True, max_length=254)
27+
description = models.TextField(blank=True, null=True)
28+
29+
class Meta:
30+
db_table = 'problem_fixes'
31+
32+
def __str__(self):
33+
return self.fix
34+
35+
36+
class ProblemSymptom(models.Model):
37+
symptom = models.CharField(max_length=254)
38+
description = models.TextField(blank=True, null=True)
39+
40+
class Meta:
41+
db_table = 'problem_symptoms'
42+
43+
def __str__(self):
44+
return self.symptom

ponder/models/repository.py

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
from django.db import models
2+
3+
class Repository(models.Model):
4+
project = models.CharField(max_length=41)
5+
user = models.CharField(max_length=25)
6+
forks = models.IntegerField()
7+
stars = models.IntegerField()
8+
watchers = models.IntegerField()
9+
open_issues = models.IntegerField()
10+
is_engineered_project = models.IntegerField(blank=True, null=True)
11+
12+
class Meta:
13+
db_table = 'repositories'
14+
15+
def __str__(self):
16+
return self.project

0 commit comments

Comments
 (0)