models.py
4.06 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
from django.db import models
from django.utils.translation import ugettext_lazy as _
from colab.plugins.utils.models import Collaboration
from hitcounter.models import HitCounterModelMixin
class GitlabProject(models.Model, HitCounterModelMixin):
id = models.IntegerField(primary_key=True)
description = models.TextField()
public = models.BooleanField(default=True)
name = models.TextField()
name_with_namespace = models.TextField()
created_at = models.DateTimeField(blank=True)
last_activity_at = models.DateTimeField(blank=True)
path_with_namespace = models.TextField(blank=True, null=True)
@property
def url(self):
return u'/gitlab/{}'.format(self.path_with_namespace)
class Meta:
verbose_name = _('Gitlab Project')
verbose_name_plural = _('Gitlab Projects')
class GitlabMergeRequest(Collaboration):
id = models.IntegerField(primary_key=True)
target_branch = models.TextField()
source_branch = models.TextField()
project = models.ForeignKey(GitlabProject, null=True,
on_delete=models.SET_NULL)
description = models.TextField()
title = models.TextField()
state = models.TextField()
created_at = models.DateTimeField(blank=True, null=True)
@property
def modified(self):
return self.created_at
@property
def tag(self):
return self.state
type = u'merge_request'
icon_name = u'file'
@property
def url(self):
return u'/gitlab/{}/merge_requests/{}'.format(
self.project.path_with_namespace, self.id)
def get_author(self):
return self.user
class Meta:
verbose_name = _('Gitlab Merge Request')
verbose_name_plural = _('Gitlab Merge Requests')
class GitlabIssue(Collaboration):
id = models.IntegerField(primary_key=True)
project = models.ForeignKey(GitlabProject, null=True,
on_delete=models.SET_NULL)
title = models.TextField()
description = models.TextField()
state = models.TextField()
created_at = models.DateTimeField(blank=True, null=True)
icon_name = u'align-right'
type = u'gitlab_issue'
@property
def modified(self):
return self.created_at
@property
def url(self):
return u'/gitlab/{}/issues/{}'.format(
self.project.path_with_namespace, self.id)
class Meta:
verbose_name = _('Gitlab Issue')
verbose_name_plural = _('Gitlab Issues')
class GitlabComment(Collaboration):
id = models.IntegerField(primary_key=True)
body = models.TextField()
created_at = models.DateTimeField(blank=True, null=True)
issue_comment = models.BooleanField(default=True)
project = models.ForeignKey(GitlabProject, null=True,
on_delete=models.SET_NULL)
parent_id = models.IntegerField(null=True)
type = u'comment'
@property
def modified(self):
return self.created_at
@property
def title(self):
if self.issue_comment:
issue = GitlabIssue.objects.get(id=self.parent_id)
return issue.title
else:
merge_request = GitlabMergeRequest.objects.get(id=self.parent_id)
return merge_request.title
icon_name = u'align-right'
@property
def description(self):
return self.body
@property
def tag(self):
if self.issue_comment:
issue = GitlabIssue.objects.get(id=self.parent_id)
return issue.state
else:
merge_request = GitlabMergeRequest.objects.get(id=self.parent_id)
return merge_request.state
@property
def url(self):
if self.issue_comment:
return u'/gitlab/{}/issues/{}#notes_{}'.format(
self.project.path_with_namespace, self.parent_id, self.id)
else:
return u'/gitlab/{}/merge_requests/{}#notes_{}'.format(
self.project.path_with_namespace, self.parent_id, self.id)
class Meta:
verbose_name = _('Gitlab Comments')
verbose_name_plural = _('Gitlab Comments')