Commit 4a907356c1a49f191427928bec0617a67670c2f9

Authored by Gust
1 parent fd31cbb7
Exists in move_out_plugins

Remove gitlab from colab.plugins

Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
Signed-off-by: Alexandre Barbosa <alexandreab@live.com>
colab/plugins/gitlab/__init__.py
@@ -1,3 +0,0 @@ @@ -1,3 +0,0 @@
1 -  
2 -  
3 -default_app_config = 'colab.plugins.gitlab.apps.ProxyGitlabAppConfig'  
colab/plugins/gitlab/apps.py
@@ -1,25 +0,0 @@ @@ -1,25 +0,0 @@
1 -  
2 -from django.utils.translation import ugettext_lazy as _  
3 -  
4 -from ..utils.apps import ColabProxiedAppConfig  
5 -  
6 -  
7 -class ProxyGitlabAppConfig(ColabProxiedAppConfig):  
8 - name = 'colab.plugins.gitlab'  
9 - verbose_name = 'Gitlab Proxy'  
10 -  
11 - menu = {  
12 - 'title': _('Code'),  
13 - 'links': (  
14 - (_('Public Projects'), 'public/projects'),  
15 - ),  
16 - 'auth_links': (  
17 - (_('Profile'), 'profile'),  
18 - (_('New Project'), 'projects/new'),  
19 - (_('Projects'), 'dashboard/projects'),  
20 - (_('Groups'), 'profile/groups'),  
21 - (_('Issues'), 'dashboard/issues'),  
22 - (_('Merge Requests'), 'dashboard/merge_requests'),  
23 -  
24 - ),  
25 - }  
colab/plugins/gitlab/data_api.py
@@ -1,205 +0,0 @@ @@ -1,205 +0,0 @@
1 -import json  
2 -import urllib  
3 -import urllib2  
4 -import logging  
5 -  
6 -from dateutil.parser import parse  
7 -  
8 -from django.conf import settings  
9 -from django.db.models.fields import DateTimeField  
10 -  
11 -from colab.plugins.gitlab.models import (GitlabProject, GitlabMergeRequest,  
12 - GitlabComment, GitlabIssue)  
13 -from colab.plugins.utils.proxy_data_api import ProxyDataAPI  
14 -  
15 -LOGGER = logging.getLogger('colab.plugin.gitlab')  
16 -  
17 -  
18 -class GitlabDataAPI(ProxyDataAPI):  
19 -  
20 - def get_request_url(self, path, **kwargs):  
21 - proxy_config = settings.PROXIED_APPS.get(self.app_label, {})  
22 -  
23 - upstream = proxy_config.get('upstream')  
24 - kwargs['private_token'] = proxy_config.get('private_token')  
25 - params = urllib.urlencode(kwargs)  
26 -  
27 - if upstream[-1] == '/':  
28 - upstream = upstream[:-1]  
29 -  
30 - return u'{}{}?{}'.format(upstream, path, params)  
31 -  
32 - def get_json_data(self, api_url, page, pages=1000):  
33 - url = self.get_request_url(api_url, per_page=pages,  
34 - page=page)  
35 -  
36 - try:  
37 - data = urllib2.urlopen(url, timeout=10)  
38 - json_data = json.load(data)  
39 - except urllib2.URLError:  
40 - LOGGER.exception("Connection timeout: " + url)  
41 - json_data = []  
42 -  
43 - return json_data  
44 -  
45 - def fill_object_data(self, element, _object):  
46 - for field in _object._meta.fields:  
47 - try:  
48 - if field.name == "user":  
49 - _object.update_user(  
50 - element["author"]["username"])  
51 - continue  
52 - if field.name == "project":  
53 - _object.project_id = element["project_id"]  
54 - continue  
55 -  
56 - if isinstance(field, DateTimeField):  
57 - value = parse(element[field.name])  
58 - else:  
59 - value = element[field.name]  
60 -  
61 - setattr(_object, field.name, value)  
62 - except KeyError:  
63 - continue  
64 -  
65 - return _object  
66 -  
67 - def fetch_projects(self):  
68 - page = 1  
69 - projects = []  
70 -  
71 - while True:  
72 - json_data = self.get_json_data('/api/v3/projects/all', page)  
73 - page = page + 1  
74 -  
75 - if not len(json_data):  
76 - break  
77 -  
78 - for element in json_data:  
79 - project = GitlabProject()  
80 - self.fill_object_data(element, project)  
81 - projects.append(project)  
82 -  
83 - return projects  
84 -  
85 - def fetch_merge_request(self, projects):  
86 - all_merge_request = []  
87 -  
88 - for project in projects:  
89 - page = 1  
90 - while True:  
91 - url = '/api/v3/projects/{}/merge_requests'.format(project.id)  
92 - json_data_mr = self.get_json_data(url, page)  
93 - page = page + 1  
94 -  
95 - if len(json_data_mr) == 0:  
96 - break  
97 -  
98 - for element in json_data_mr:  
99 - single_merge_request = GitlabMergeRequest()  
100 - self.fill_object_data(element, single_merge_request)  
101 - all_merge_request.append(single_merge_request)  
102 -  
103 - return all_merge_request  
104 -  
105 - def fetch_issue(self, projects):  
106 - all_issues = []  
107 -  
108 - for project in projects:  
109 - page = 1  
110 - while True:  
111 - url = '/api/v3/projects/{}/issues'.format(project.id)  
112 - json_data_issue = self.get_json_data(url, page)  
113 - page = page + 1  
114 -  
115 - if len(json_data_issue) == 0:  
116 - break  
117 -  
118 - for element in json_data_issue:  
119 - single_issue = GitlabIssue()  
120 - self.fill_object_data(element, single_issue)  
121 - all_issues.append(single_issue)  
122 -  
123 - return all_issues  
124 -  
125 - def fetch_comments(self):  
126 - all_comments = []  
127 - all_comments.extend(self.fetch_comments_MR())  
128 - all_comments.extend(self.fetch_comments_issues())  
129 -  
130 - return all_comments  
131 -  
132 - def fetch_comments_MR(self):  
133 - all_comments = []  
134 - all_merge_requests = GitlabMergeRequest.objects.all()  
135 -  
136 - for merge_request in all_merge_requests:  
137 - page = 1  
138 - while True:  
139 - url = '/api/v3/projects/{}/merge_requests/{}/notes'.format(  
140 - merge_request.project_id, merge_request.id)  
141 - json_data_mr = self.get_json_data(url, page)  
142 - page = page + 1  
143 -  
144 - if len(json_data_mr) == 0:  
145 - break  
146 -  
147 - for element in json_data_mr:  
148 - single_comment = GitlabComment()  
149 - self.fill_object_data(element, single_comment)  
150 - single_comment.project = merge_request.project  
151 - single_comment.issue_comment = False  
152 - single_comment.parent_id = merge_request.id  
153 - all_comments.append(single_comment)  
154 -  
155 - return all_comments  
156 -  
157 - def fetch_comments_issues(self):  
158 - all_comments = []  
159 - all_issues = GitlabIssue.objects.all()  
160 -  
161 - for issue in all_issues:  
162 - page = 1  
163 - while True:  
164 - url = '/api/v3/projects/{}/issues/{}/notes'.format(  
165 - issue.project_id, issue.id)  
166 - json_data_mr = self.get_json_data(url, page)  
167 - page = page + 1  
168 -  
169 - if len(json_data_mr) == 0:  
170 - break  
171 -  
172 - for element in json_data_mr:  
173 - single_comment = GitlabComment()  
174 - self.fill_object_data(element, single_comment)  
175 - single_comment.project = issue.project  
176 - single_comment.issue_comment = True  
177 - single_comment.parent_id = issue.id  
178 - all_comments.append(single_comment)  
179 -  
180 - return all_comments  
181 -  
182 - def fetch_data(self):  
183 - LOGGER.info("Importing Projects")  
184 - projects = self.fetch_projects()  
185 - for datum in projects:  
186 - datum.save()  
187 -  
188 - LOGGER.info("Importing Merge Requests")  
189 - merge_request_list = self.fetch_merge_request(projects)  
190 - for datum in merge_request_list:  
191 - datum.save()  
192 -  
193 - LOGGER.info("Importing Issues")  
194 - issue_list = self.fetch_issue(projects)  
195 - for datum in issue_list:  
196 - datum.save()  
197 -  
198 - LOGGER.info("Importing Comments")  
199 - comments_list = self.fetch_comments()  
200 - for datum in comments_list:  
201 - datum.save()  
202 -  
203 - @property  
204 - def app_label(self):  
205 - return 'gitlab'  
colab/plugins/gitlab/diazo.xml
@@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@
1 -<rules  
2 - xmlns="http://namespaces.plone.org/diazo"  
3 - xmlns:css="http://namespaces.plone.org/diazo/css"  
4 - xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
5 -  
6 - <before theme-children="/html/head" content-children="/html/head" />  
7 - <before css:theme-children="#main-content" css:content-children="body" />  
8 -  
9 - <merge attributes="class" css:theme="body" css:content="body" />  
10 -  
11 - <!-- Add gitlab properties -->  
12 - <merge attributes="data-page" css:theme="body" css:content="body" />  
13 - <merge attributes="data-project-id" css:theme="body" css:content="body" />  
14 -  
15 - <drop css:content="#top-panel" />  
16 - <drop css:content=".navbar-gitlab" />  
17 - <drop css:content=".git-clone-holder .btn:contains('HTTPS')" />  
18 -</rules>  
colab/plugins/gitlab/migrations/0001_initial.py
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -from __future__ import unicode_literals  
3 -  
4 -from django.db import models, migrations  
5 -  
6 -  
7 -class Migration(migrations.Migration):  
8 -  
9 - dependencies = [  
10 - ]  
11 -  
12 - operations = [  
13 - migrations.CreateModel(  
14 - name='GitlabProject',  
15 - fields=[  
16 - ('id', models.IntegerField(serialize=False, primary_key=True)),  
17 - ('description', models.TextField()),  
18 - ('public', models.BooleanField(default=True)),  
19 - ('name', models.TextField()),  
20 - ('name_with_namespace', models.TextField()),  
21 - ('created_at', models.DateTimeField(blank=True)),  
22 - ('last_activity_at', models.DateTimeField(blank=True)),  
23 - ],  
24 - options={  
25 - },  
26 - bases=(models.Model,),  
27 - ),  
28 - ]  
colab/plugins/gitlab/migrations/0002_auto_20150205_1220.py
@@ -1,69 +0,0 @@ @@ -1,69 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -from __future__ import unicode_literals  
3 -  
4 -from django.db import models, migrations  
5 -import django.db.models.deletion  
6 -from django.conf import settings  
7 -  
8 -  
9 -class Migration(migrations.Migration):  
10 -  
11 - dependencies = [  
12 - migrations.swappable_dependency(settings.AUTH_USER_MODEL),  
13 - ('gitlab', '0001_initial'),  
14 - ]  
15 -  
16 - operations = [  
17 - migrations.CreateModel(  
18 - name='GitlabComment',  
19 - fields=[  
20 - ('id', models.IntegerField(serialize=False, primary_key=True)),  
21 - ('body', models.TextField()),  
22 - ('created_at', models.DateTimeField(blank=True)),  
23 - ('user', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, null=True)),  
24 - ],  
25 - options={  
26 - 'verbose_name': 'Gitlab Comments',  
27 - 'verbose_name_plural': 'Gitlab Comments',  
28 - },  
29 - bases=(models.Model,),  
30 - ),  
31 - migrations.CreateModel(  
32 - name='GitlabIssue',  
33 - fields=[  
34 - ('id', models.IntegerField(serialize=False, primary_key=True)),  
35 - ('title', models.TextField()),  
36 - ('description', models.TextField()),  
37 - ('state', models.TextField()),  
38 - ('project', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='gitlab.GitlabProject', null=True)),  
39 - ('user', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, null=True)),  
40 - ],  
41 - options={  
42 - 'verbose_name': 'Gitlab Collaboration',  
43 - 'verbose_name_plural': 'Gitlab Collaborations',  
44 - },  
45 - bases=(models.Model,),  
46 - ),  
47 - migrations.CreateModel(  
48 - name='GitlabMergeRequest',  
49 - fields=[  
50 - ('id', models.IntegerField(serialize=False, primary_key=True)),  
51 - ('target_branch', models.TextField()),  
52 - ('source_branch', models.TextField()),  
53 - ('description', models.TextField()),  
54 - ('title', models.TextField()),  
55 - ('state', models.TextField()),  
56 - ('project', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='gitlab.GitlabProject', null=True)),  
57 - ('user', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, null=True)),  
58 - ],  
59 - options={  
60 - 'verbose_name': 'Gitlab Merge Request',  
61 - 'verbose_name_plural': 'Gitlab Merge Requests',  
62 - },  
63 - bases=(models.Model,),  
64 - ),  
65 - migrations.AlterModelOptions(  
66 - name='gitlabproject',  
67 - options={'verbose_name': 'Gitlab Project', 'verbose_name_plural': 'Gitlab Projects'},  
68 - ),  
69 - ]  
colab/plugins/gitlab/migrations/0003_auto_20150211_1203.py
@@ -1,61 +0,0 @@ @@ -1,61 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -from __future__ import unicode_literals  
3 -  
4 -from django.db import models, migrations  
5 -import django.db.models.deletion  
6 -  
7 -  
8 -class Migration(migrations.Migration):  
9 -  
10 - dependencies = [  
11 - ('gitlab', '0002_auto_20150205_1220'),  
12 - ]  
13 -  
14 - operations = [  
15 - migrations.AlterModelOptions(  
16 - name='gitlabissue',  
17 - options={'verbose_name': 'Gitlab Issue', 'verbose_name_plural': 'Gitlab Issues'},  
18 - ),  
19 - migrations.AddField(  
20 - model_name='gitlabcomment',  
21 - name='issue_comment',  
22 - field=models.BooleanField(default=True),  
23 - preserve_default=True,  
24 - ),  
25 - migrations.AddField(  
26 - model_name='gitlabcomment',  
27 - name='parent_id',  
28 - field=models.IntegerField(null=True),  
29 - preserve_default=True,  
30 - ),  
31 - migrations.AddField(  
32 - model_name='gitlabcomment',  
33 - name='project',  
34 - field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='gitlab.GitlabProject', null=True),  
35 - preserve_default=True,  
36 - ),  
37 - migrations.AddField(  
38 - model_name='gitlabissue',  
39 - name='created_at',  
40 - field=models.DateTimeField(null=True, blank=True),  
41 - preserve_default=True,  
42 - ),  
43 - migrations.AddField(  
44 - model_name='gitlabmergerequest',  
45 - name='created_at',  
46 - field=models.DateTimeField(null=True, blank=True),  
47 - preserve_default=True,  
48 - ),  
49 - migrations.AddField(  
50 - model_name='gitlabproject',  
51 - name='path_with_namespace',  
52 - field=models.TextField(null=True, blank=True),  
53 - preserve_default=True,  
54 - ),  
55 - migrations.AlterField(  
56 - model_name='gitlabcomment',  
57 - name='created_at',  
58 - field=models.DateTimeField(null=True, blank=True),  
59 - preserve_default=True,  
60 - ),  
61 - ]  
colab/plugins/gitlab/migrations/__init__.py
colab/plugins/gitlab/models.py
@@ -1,143 +0,0 @@ @@ -1,143 +0,0 @@
1 -from django.db import models  
2 -from django.utils.translation import ugettext_lazy as _  
3 -from colab.plugins.utils.models import Collaboration  
4 -from hitcounter.models import HitCounterModelMixin  
5 -  
6 -  
7 -class GitlabProject(models.Model, HitCounterModelMixin):  
8 -  
9 - id = models.IntegerField(primary_key=True)  
10 - description = models.TextField()  
11 - public = models.BooleanField(default=True)  
12 - name = models.TextField()  
13 - name_with_namespace = models.TextField()  
14 - created_at = models.DateTimeField(blank=True)  
15 - last_activity_at = models.DateTimeField(blank=True)  
16 - path_with_namespace = models.TextField(blank=True, null=True)  
17 -  
18 - @property  
19 - def url(self):  
20 - return u'/gitlab/{}'.format(self.path_with_namespace)  
21 -  
22 - class Meta:  
23 - verbose_name = _('Gitlab Project')  
24 - verbose_name_plural = _('Gitlab Projects')  
25 -  
26 -  
27 -class GitlabMergeRequest(Collaboration):  
28 -  
29 - id = models.IntegerField(primary_key=True)  
30 - target_branch = models.TextField()  
31 - source_branch = models.TextField()  
32 - project = models.ForeignKey(GitlabProject, null=True,  
33 - on_delete=models.SET_NULL)  
34 - description = models.TextField()  
35 - title = models.TextField()  
36 - state = models.TextField()  
37 - created_at = models.DateTimeField(blank=True, null=True)  
38 -  
39 - @property  
40 - def modified(self):  
41 - return self.created_at  
42 -  
43 - @property  
44 - def tag(self):  
45 - return self.state  
46 -  
47 - type = u'merge_request'  
48 - icon_name = u'file'  
49 -  
50 - @property  
51 - def url(self):  
52 - return u'/gitlab/{}/merge_requests/{}'.format(  
53 - self.project.path_with_namespace, self.id)  
54 -  
55 - def get_author(self):  
56 - return self.user  
57 -  
58 - class Meta:  
59 - verbose_name = _('Gitlab Merge Request')  
60 - verbose_name_plural = _('Gitlab Merge Requests')  
61 -  
62 -  
63 -class GitlabIssue(Collaboration):  
64 -  
65 - id = models.IntegerField(primary_key=True)  
66 - project = models.ForeignKey(GitlabProject, null=True,  
67 - on_delete=models.SET_NULL)  
68 - title = models.TextField()  
69 - description = models.TextField()  
70 -  
71 - state = models.TextField()  
72 - created_at = models.DateTimeField(blank=True, null=True)  
73 -  
74 - icon_name = u'align-right'  
75 - type = u'gitlab_issue'  
76 -  
77 - @property  
78 - def modified(self):  
79 - return self.created_at  
80 -  
81 - @property  
82 - def url(self):  
83 - return u'/gitlab/{}/issues/{}'.format(  
84 - self.project.path_with_namespace, self.id)  
85 -  
86 - class Meta:  
87 - verbose_name = _('Gitlab Issue')  
88 - verbose_name_plural = _('Gitlab Issues')  
89 -  
90 -  
91 -class GitlabComment(Collaboration):  
92 -  
93 - id = models.IntegerField(primary_key=True)  
94 - body = models.TextField()  
95 - created_at = models.DateTimeField(blank=True, null=True)  
96 - issue_comment = models.BooleanField(default=True)  
97 -  
98 - project = models.ForeignKey(GitlabProject, null=True,  
99 - on_delete=models.SET_NULL)  
100 -  
101 - parent_id = models.IntegerField(null=True)  
102 - type = u'comment'  
103 -  
104 - @property  
105 - def modified(self):  
106 - return self.created_at  
107 -  
108 - @property  
109 - def title(self):  
110 - if self.issue_comment:  
111 - issue = GitlabIssue.objects.get(id=self.parent_id)  
112 - return issue.title  
113 - else:  
114 - merge_request = GitlabMergeRequest.objects.get(id=self.parent_id)  
115 - return merge_request.title  
116 -  
117 - icon_name = u'align-right'  
118 -  
119 - @property  
120 - def description(self):  
121 - return self.body  
122 -  
123 - @property  
124 - def tag(self):  
125 - if self.issue_comment:  
126 - issue = GitlabIssue.objects.get(id=self.parent_id)  
127 - return issue.state  
128 - else:  
129 - merge_request = GitlabMergeRequest.objects.get(id=self.parent_id)  
130 - return merge_request.state  
131 -  
132 - @property  
133 - def url(self):  
134 - if self.issue_comment:  
135 - return u'/gitlab/{}/issues/{}#notes_{}'.format(  
136 - self.project.path_with_namespace, self.parent_id, self.id)  
137 - else:  
138 - return u'/gitlab/{}/merge_requests/{}#notes_{}'.format(  
139 - self.project.path_with_namespace, self.parent_id, self.id)  
140 -  
141 - class Meta:  
142 - verbose_name = _('Gitlab Comments')  
143 - verbose_name_plural = _('Gitlab Comments')  
colab/plugins/gitlab/search_indexes.py
@@ -1,120 +0,0 @@ @@ -1,120 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -  
3 -import string  
4 -  
5 -from haystack import indexes  
6 -from haystack.utils import log as logging  
7 -  
8 -from .models import (GitlabProject, GitlabMergeRequest,  
9 - GitlabIssue, GitlabComment)  
10 -  
11 -  
12 -logger = logging.getLogger('haystack')  
13 -  
14 -# The string maketrans always return a string encoded with latin1  
15 -# http://stackoverflow.com/questions/1324067/how-do-i-get-str-translate-to-work-with-unicode-strings  
16 -table = string.maketrans(  
17 - string.punctuation,  
18 - '.' * len(string.punctuation)  
19 -).decode('latin1')  
20 -  
21 -  
22 -class GitlabProjectIndex(indexes.SearchIndex, indexes.Indexable):  
23 - text = indexes.CharField(document=True, use_template=False, stored=False)  
24 - title = indexes.CharField(model_attr='name')  
25 - description = indexes.CharField(model_attr='description', null=True)  
26 - tag = indexes.CharField()  
27 - url = indexes.CharField(model_attr='url', indexed=False)  
28 - icon_name = indexes.CharField()  
29 - type = indexes.CharField()  
30 - created = indexes.DateTimeField(model_attr='created_at', null=True)  
31 -  
32 - def prepare_tag(self, obj):  
33 - return "{}".format(obj.name_with_namespace.split('/')[0].strip())  
34 -  
35 - def prepare_icon_name(self, obj):  
36 - return u'file'  
37 -  
38 - def get_ful_name(self):  
39 - self.objs.name  
40 -  
41 - def get_model(self):  
42 - return GitlabProject  
43 -  
44 - def prepare_type(self, obj):  
45 - return u'gitlab'  
46 -  
47 -  
48 -class GitlabMergeRequestIndex(indexes.SearchIndex, indexes.Indexable):  
49 -  
50 - text = indexes.CharField(document=True, use_template=False, stored=False)  
51 - title = indexes.CharField(model_attr='title')  
52 - description = indexes.CharField(model_attr='description')  
53 - tag = indexes.CharField(model_attr='state')  
54 - url = indexes.CharField(model_attr='url', indexed=False)  
55 - icon_name = indexes.CharField()  
56 - type = indexes.CharField(model_attr='type')  
57 -  
58 - modified_by = indexes.CharField(model_attr='modified_by', null=True)  
59 - modified_by_url = indexes.CharField(model_attr='modified_by_url',  
60 - null=True)  
61 - modified = indexes.DateTimeField(model_attr='created_at', null=True)  
62 -  
63 - def get_model(self):  
64 - return GitlabMergeRequest  
65 -  
66 - def prepare_icon_name(self, obj):  
67 - return u'file'  
68 -  
69 - def prepare_type(self, obj):  
70 - return u'merge_request'  
71 -  
72 -  
73 -class GitlabIssueIndex(indexes.SearchIndex, indexes.Indexable):  
74 -  
75 - text = indexes.CharField(document=True, use_template=False, stored=False)  
76 - title = indexes.CharField(model_attr='title')  
77 - description = indexes.CharField(model_attr='description')  
78 - tag = indexes.CharField(model_attr='state')  
79 - url = indexes.CharField(model_attr='url', indexed=False)  
80 - icon_name = indexes.CharField()  
81 - type = indexes.CharField(model_attr='type')  
82 -  
83 - modified_by = indexes.CharField(model_attr='modified_by', null=True)  
84 - modified_by_url = indexes.CharField(model_attr='modified_by_url',  
85 - null=True)  
86 - modified = indexes.DateTimeField(model_attr='created_at', null=True)  
87 -  
88 - def get_model(self):  
89 - return GitlabIssue  
90 -  
91 - def prepare_icon_name(self, obj):  
92 - return u'align-right'  
93 -  
94 - def prepare_type(self, obj):  
95 - return u'merge_request'  
96 -  
97 -  
98 -class GitlabCommentIndex(indexes.SearchIndex, indexes.Indexable):  
99 -  
100 - text = indexes.CharField(document=True, use_template=False, stored=False)  
101 - title = indexes.CharField(model_attr='title')  
102 - description = indexes.CharField(model_attr='description')  
103 - tag = indexes.CharField()  
104 - url = indexes.CharField(model_attr='url', indexed=False)  
105 - icon_name = indexes.CharField()  
106 - type = indexes.CharField(model_attr='type')  
107 -  
108 - modified_by = indexes.CharField(model_attr='modified_by', null=True)  
109 - modified_by_url = indexes.CharField(model_attr='modified_by_url',  
110 - null=True)  
111 - modified = indexes.DateTimeField(model_attr='created_at', null=True)  
112 -  
113 - def get_model(self):  
114 - return GitlabComment  
115 -  
116 - def prepare_icon_name(self, obj):  
117 - return u'align-right'  
118 -  
119 - def prepare_tag(self, obj):  
120 - return obj.tag  
colab/plugins/gitlab/templates/proxy/gitlab.html
@@ -1,51 +0,0 @@ @@ -1,51 +0,0 @@
1 -{% extends 'base.html' %}  
2 -{% load static from staticfiles %}  
3 -  
4 -{% block head_css %}  
5 -<style>  
6 - /* Reset left and with for .modal-dialog style (like gitlab does),  
7 - the bootstrap.css one makes it small */  
8 - @media screen and (min-width: 768px) {  
9 - .modal-dialog {  
10 - left: auto;  
11 - width: auto;  
12 - }  
13 - }  
14 - div#main-content {  
15 - margin-top: 65px;  
16 - }  
17 -  
18 - div#main-content div.container {  
19 - width: 1110px;  
20 - }  
21 - div#main-content div.flash-container{  
22 - width: 85%;  
23 - }  
24 - #breadcrumbs {  
25 - border: 0 !important;  
26 - }  
27 -  
28 - #right-top-nav {  
29 - margin-right: 5em !important;  
30 - }  
31 -</style>  
32 -{% endblock %}  
33 -  
34 -{% block head_js %}  
35 -<script type="text/javascript">  
36 - jQuery(function(){  
37 - // bootstrap.css forces .hide {display:none!important}, and this makes  
38 - // gitlab .hide elements NEVER have a display:block, so  
39 - // instead of editing bootstrap.css, we just removed '.hide' css class and  
40 - // toggled  
41 - jQuery('.hide').removeClass('hide').css('display', 'none');  
42 -  
43 - // Hit the SSH clone button to select it by default  
44 - jQuery(".git-clone-holder .btn:contains('SSH')").click()  
45 -  
46 - });  
47 -</script>  
48 -<script type="text/javascript" src="{% static 'third-party/bootstrap/js/bootstrap.min.js' %}"></script>  
49 -<script type="text/javascript" src="{% static 'third-party/jquery.cookie.js' %}"></script>  
50 -<script>jQuery.noConflict();</script>  
51 -{% endblock %}  
colab/plugins/gitlab/tests/__init__.py
colab/plugins/gitlab/tests/test_gitlab.py
@@ -1,114 +0,0 @@ @@ -1,114 +0,0 @@
1 -"""  
2 -Test User class.  
3 -Objective: Test parameters, and behavior.  
4 -"""  
5 -from datetime import datetime  
6 -  
7 -  
8 -from django.test import TestCase, Client  
9 -from colab.accounts.models import User  
10 -from colab.plugins.gitlab.models import GitlabProject, \  
11 - GitlabIssue, GitlabComment, GitlabMergeRequest  
12 -  
13 -  
14 -class GitlabTest(TestCase):  
15 -  
16 - def setUp(self):  
17 - self.user = self.create_user()  
18 - self.client = Client()  
19 - self.create_gitlab_data()  
20 -  
21 - super(GitlabTest, self).setUp()  
22 -  
23 - def tearDown(self):  
24 - pass  
25 -  
26 - def test_data_integrity(self):  
27 - self.assertEqual(GitlabProject.objects.all().count(), 1)  
28 - self.assertEqual(GitlabMergeRequest.objects.all().count(), 1)  
29 - self.assertEqual(GitlabIssue.objects.all().count(), 1)  
30 - self.assertEqual(GitlabComment.objects.all().count(), 2)  
31 -  
32 - def test_project_url(self):  
33 - self.assertEqual(GitlabProject.objects.get(id=1).url,  
34 - '/gitlab/softwarepublico/colab')  
35 -  
36 - def test_merge_request_url(self):  
37 - self.assertEqual(GitlabMergeRequest.objects.get(id=1).url,  
38 - '/gitlab/softwarepublico/colab/merge_requests/1')  
39 -  
40 - def test_issue_url(self):  
41 - self.assertEqual(GitlabIssue.objects.get(id=1).url,  
42 - '/gitlab/softwarepublico/colab/issues/1')  
43 -  
44 - def test_comment_on_mr_url(self):  
45 - url = '/gitlab/softwarepublico/colab/merge_requests/1#notes_1'  
46 - self.assertEqual(GitlabComment.objects.get(id=1).url, url)  
47 -  
48 - def test_comment_on_issue_url(self):  
49 - self.assertEqual(GitlabComment.objects.get(id=2).url,  
50 - '/gitlab/softwarepublico/colab/issues/1#notes_2')  
51 -  
52 - def create_gitlab_data(self):  
53 - g = GitlabProject()  
54 - g.id = 1  
55 - g.name = "colab"  
56 - g.name_with_namespace = "Software Public / Colab"  
57 - g.path_with_namespace = "softwarepublico/colab"  
58 - g.created_at = datetime.now()  
59 - g.last_activity_at = datetime.now()  
60 - g.save()  
61 -  
62 - mr = GitlabMergeRequest()  
63 - mr.id = 1  
64 - mr.project = g  
65 - mr.title = "Include plugin support"  
66 - mr.description = "Merge request for plugin support"  
67 - mr.state = "Closed"  
68 - mr.created_at = datetime.now()  
69 - mr.update_user(self.user.username)  
70 - mr.save()  
71 -  
72 - i = GitlabIssue()  
73 - i.id = 1  
74 - i.project = g  
75 - i.title = "Issue for colab"  
76 - i.description = "Issue reported to colab"  
77 - i.created_at = datetime.now()  
78 - i.state = "Open"  
79 - i.update_user(self.user.username)  
80 - i.save()  
81 -  
82 - c1 = GitlabComment()  
83 - c1.id = 1  
84 - c1.parent_id = mr.id  
85 - c1.project = g  
86 - c1.body = "Comment to merge request"  
87 - c1.created_at = datetime.now()  
88 - c1.issue_comment = False  
89 - c1.update_user(self.user.username)  
90 - c1.save()  
91 -  
92 - c2 = GitlabComment()  
93 - c2.id = 2  
94 - c2.parent_id = i.id  
95 - c2.project = g  
96 - c2.body = "Comment to issue"  
97 - c2.created_at = datetime.now()  
98 - c2.issue_comment = True  
99 - c2.update_user(self.user.username)  
100 - c2.save()  
101 -  
102 - def create_user(self):  
103 - user = User()  
104 - user.username = "USERtestCoLaB"  
105 - user.set_password("123colab4")  
106 - user.email = "usertest@colab.com.br"  
107 - user.id = 1  
108 - user.twitter = "usertestcolab"  
109 - user.facebook = "usertestcolab"  
110 - user.first_name = "USERtestCoLaB"  
111 - user.last_name = "COLAB"  
112 - user.save()  
113 -  
114 - return user  
colab/plugins/gitlab/urls.py
@@ -1,9 +0,0 @@ @@ -1,9 +0,0 @@
1 -  
2 -from django.conf.urls import patterns, url  
3 -  
4 -from .views import GitlabProxyView  
5 -  
6 -urlpatterns = patterns('',  
7 - # Gitlab URLs  
8 - url(r'^(?P<path>.*)$', GitlabProxyView.as_view(), name='gitlab'),  
9 -)  
colab/plugins/gitlab/views.py
@@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
1 -  
2 -from ..utils.views import ColabProxyView  
3 -  
4 -  
5 -class GitlabProxyView(ColabProxyView):  
6 - app_label = 'gitlab'  
7 - diazo_theme_template = 'proxy/gitlab.html'