Commit 03350be3ab0253af48ea92ddd31dd2e59046a5b9

Authored by Gust
Committed by Sergio Oliveira
1 parent af1917f2

Added field to model and updated data_api based on the new elements in model.

Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
colab/proxy/gitlab/data_api.py
... ... @@ -59,7 +59,6 @@ class GitlabDataAPI(ProxyDataAPI):
59 59  
60 60 def fetch_merge_request(self, projects):
61 61 all_merge_request = []
62   -
63 62 # Iterate under all projects
64 63 for project in projects:
65 64 page = 1
... ... @@ -92,7 +91,7 @@ class GitlabDataAPI(ProxyDataAPI):
92 91 continue
93 92  
94 93 if isinstance(field, DateTimeField):
95   - value = parse(element[field.name])
  94 + value = parse(element["created_at"])
96 95 else:
97 96 value = element[field.name]
98 97  
... ... @@ -135,7 +134,7 @@ class GitlabDataAPI(ProxyDataAPI):
135 134 continue
136 135  
137 136 if isinstance(field, DateTimeField):
138   - value = parse(element[field.name])
  137 + value = parse(element["created_at"])
139 138 else:
140 139 value = element[field.name]
141 140  
... ... @@ -184,9 +183,19 @@ class GitlabDataAPI(ProxyDataAPI):
184 183 single_comment.update_user(
185 184 element["author"]["username"])
186 185 continue
  186 + if field.name == "project":
  187 + single_comment.project = \
  188 + merge_request.project
  189 + continue
  190 + if field.name == "issue_comment":
  191 + single_comment.issue_comment = False
  192 + continue
  193 + if field.name == "parent_id":
  194 + single_comment.parent_id = merge_request.id
  195 + continue
187 196  
188 197 if isinstance(field, DateTimeField):
189   - value = parse(element[field.name])
  198 + value = parse(element["created_at"])
190 199 else:
191 200 value = element[field.name]
192 201  
... ... @@ -227,9 +236,19 @@ class GitlabDataAPI(ProxyDataAPI):
227 236 single_comment.update_user(
228 237 element["author"]["username"])
229 238 continue
  239 + if field.name == "project":
  240 + single_comment.project = \
  241 + issue.project
  242 + continue
  243 + if field.name == "issue_comment":
  244 + single_comment.issue_comment = True
  245 + continue
  246 + if field.name == "parent_id":
  247 + single_comment.parent_id = issue.id
  248 + continue
230 249  
231 250 if isinstance(field, DateTimeField):
232   - value = parse(element[field.name])
  251 + value = parse(element["created_at"])
233 252 else:
234 253 value = element[field.name]
235 254  
... ... @@ -240,18 +259,22 @@ class GitlabDataAPI(ProxyDataAPI):
240 259 return all_comments
241 260  
242 261 def fetch_data(self):
  262 + print "projects"
243 263 projects = self.fetch_projects()
244 264 for datum in projects:
245 265 datum.save()
246 266  
247   -# merge_request_list = self.fetch_merge_request(projects)
248   -# for datum in merge_request_list:
249   -# datum.save()
  267 + print "MR"
  268 + merge_request_list = self.fetch_merge_request(projects)
  269 + for datum in merge_request_list:
  270 + datum.save()
250 271  
  272 + print "issues"
251 273 issue_list = self.fetch_issue(projects)
252 274 for datum in issue_list:
253 275 datum.save()
254 276  
  277 + print "comments"
255 278 comments_list = self.fetch_comments()
256 279 for datum in comments_list:
257 280 datum.save()
... ...
colab/proxy/gitlab/models.py
1 1 from django.db import models
2 2 from django.utils.translation import ugettext_lazy as _
3 3 from colab.proxy.utils.models import Collaboration
  4 +from hitcounter.models import HitCounterModelMixin
4 5  
  6 +import datetime
5 7  
6   -class GitlabProject(models.Model):
  8 +class GitlabProject(models.Model, HitCounterModelMixin):
7 9  
8 10 id = models.IntegerField(primary_key=True)
9 11 description = models.TextField()
... ... @@ -12,6 +14,11 @@ class GitlabProject(models.Model):
12 14 name_with_namespace = models.TextField()
13 15 created_at = models.DateTimeField(blank=True)
14 16 last_activity_at = models.DateTimeField(blank=True)
  17 + path_with_namespace = models.TextField(blank=True, null=True)
  18 +
  19 + @property
  20 + def url(self):
  21 + return u'/gitlab/{}'.format(self.path_with_namespace)
15 22  
16 23 class Meta:
17 24 verbose_name = _('Gitlab Project')
... ... @@ -28,6 +35,21 @@ class GitlabMergeRequest(Collaboration):
28 35 description = models.TextField()
29 36 title = models.TextField()
30 37 state = models.TextField()
  38 + modified = models.DateTimeField(blank=True, null=True)
  39 +
  40 + @property
  41 + def tag(self):
  42 + return self.state
  43 +
  44 + type = u'merge_request'
  45 + icon_name = u'file'
  46 +
  47 + @property
  48 + def url(self):
  49 + return u'/gitlab/{}/merge_requests/{}'.format(self.project.path_with_namespace, self.id)
  50 +
  51 + def get_author(self):
  52 + return user
31 53  
32 54 class Meta:
33 55 verbose_name = _('Gitlab Merge Request')
... ... @@ -43,10 +65,19 @@ class GitlabIssue(Collaboration):
43 65 description = models.TextField()
44 66  
45 67 state = models.TextField()
  68 + modified = models.DateTimeField(blank=True, null=True)
  69 +
  70 + icon_name = u'align-right'
  71 + type = u'gitlab_issue'
  72 +
  73 + @property
  74 + def url(self):
  75 + return u'/gitlab/{}/issues/{}'.format(self.project.path_with_namespace, self.id)
  76 +
46 77  
47 78 class Meta:
48   - verbose_name = _('Gitlab Collaboration')
49   - verbose_name_plural = _('Gitlab Collaborations')
  79 + verbose_name = _('Gitlab Issue')
  80 + verbose_name_plural = _('Gitlab Issues')
50 81  
51 82  
52 83 class GitlabComment(Collaboration):
... ... @@ -54,6 +85,48 @@ class GitlabComment(Collaboration):
54 85 id = models.IntegerField(primary_key=True)
55 86 body = models.TextField()
56 87 created_at = models.DateTimeField(blank=True)
  88 + modified = models.DateTimeField(blank=True, null=True)
  89 + issue_comment = models.BooleanField(default=True)
  90 +
  91 + project = models.ForeignKey(GitlabProject, null=True,
  92 + on_delete=models.SET_NULL)
  93 +
  94 + parent_id = models.IntegerField(null=True)
  95 + type = u'comment'
  96 +
  97 + @property
  98 + def title(self):
  99 + if self.issue_comment:
  100 + issue = GitlabIssue.objects.get(id=self.parent_id)
  101 + return issue.title
  102 + else:
  103 + merge_request = GitlabMergeRequest.objects.get(id=self.parent_id)
  104 + return merge_request.title
  105 +
  106 + icon_name = u'align-right'
  107 +
  108 + @property
  109 + def description(self):
  110 + return self.body
  111 +
  112 + @property
  113 + def tag(self):
  114 + if self.issue_comment:
  115 + issue = GitlabIssue.objects.get(id=self.parent_id)
  116 + return issue.state
  117 + else:
  118 + merge_request = GitlabMergeRequest.objects.get(id=self.parent_id)
  119 + return merge_request.state
  120 +
  121 + @property
  122 + def url(self):
  123 + if self.issue_comment:
  124 + return u'/gitlab/{}/issues/{}#notes_{}'.format(
  125 + self.project.path_with_namespace, self.parent_id, self.id)
  126 + else:
  127 + return u'/gitlab/{}/merge_requests/{}#notes_{}'.format(
  128 + self.project.path_with_namespace, self.parent_id, self.id)
  129 +
57 130  
58 131 class Meta:
59 132 verbose_name = _('Gitlab Comments')
... ...