Commit 9a0657813912e128a16ba2321d44cca2f21aaf84
Committed by
Sergio Oliveira
1 parent
03350be3
Exists in
master
and in
39 other branches
Updated haystack model.
Signed-off-by: Gustavo Jaruga <darksshades@gmail.com> Signed-off-by: Rodrigo Siqueira de Melo <rodrigosiqueiramelo@gmail.com>
Showing
1 changed file
with
121 additions
and
0 deletions
Show diff stats
@@ -0,0 +1,121 @@ | @@ -0,0 +1,121 @@ | ||
1 | +# -*- coding: utf-8 -*- | ||
2 | + | ||
3 | +import math | ||
4 | +import string | ||
5 | + | ||
6 | +from django.template import loader, Context | ||
7 | +from django.utils.text import slugify | ||
8 | +from haystack import indexes | ||
9 | +from haystack.utils import log as logging | ||
10 | + | ||
11 | +from colab.search.base_indexes import BaseIndex | ||
12 | +from .models import GitlabProject, GitlabMergeRequest, GitlabIssue, GitlabComment | ||
13 | + | ||
14 | + | ||
15 | +logger = logging.getLogger('haystack') | ||
16 | + | ||
17 | +# the string maketrans always return a string encoded with latin1 | ||
18 | +# http://stackoverflow.com/questions/1324067/how-do-i-get-str-translate-to-work-with-unicode-strings | ||
19 | +table = string.maketrans( | ||
20 | + string.punctuation, | ||
21 | + '.' * len(string.punctuation) | ||
22 | +).decode('latin1') | ||
23 | + | ||
24 | +class GitlabProjectIndex(indexes.SearchIndex, indexes.Indexable): | ||
25 | + text = indexes.CharField(document=True, use_template=False, stored=False) | ||
26 | + title = indexes.CharField(model_attr='name') | ||
27 | + description = indexes.CharField(model_attr='description', null=True) | ||
28 | + url = indexes.CharField(model_attr='url', indexed=False) | ||
29 | + type = indexes.CharField() | ||
30 | + icon_name = indexes.CharField() | ||
31 | + tag = indexes.CharField() | ||
32 | + created = indexes.DateTimeField(model_attr='created_at', null=True) | ||
33 | + | ||
34 | + def prepare_tag(self, obj): | ||
35 | + return "{}".format(obj.name_with_namespace.split('/')[0].strip()) | ||
36 | + | ||
37 | + def prepare_icon_name(self, obj): | ||
38 | + return u'file' | ||
39 | + | ||
40 | + def get_ful_name(self): | ||
41 | + self.objs.name | ||
42 | + | ||
43 | + def get_model(self): | ||
44 | + return GitlabProject | ||
45 | + | ||
46 | + def prepare_icon_name(self, obj): | ||
47 | + return u'book' | ||
48 | + | ||
49 | + def prepare_type(self, obj): | ||
50 | + return u'gitlab' | ||
51 | + | ||
52 | +class GitlabMergeRequestIndex(indexes.SearchIndex, indexes.Indexable): | ||
53 | + | ||
54 | + text = indexes.CharField(document=True, use_template=False, stored=False) | ||
55 | + description = indexes.CharField(model_attr='description') | ||
56 | + title = indexes.CharField(model_attr='title') | ||
57 | + tag = indexes.CharField(model_attr='state') | ||
58 | + url = indexes.CharField(model_attr='url', indexed=False) | ||
59 | + icon_name = indexes.CharField() | ||
60 | + type = indexes.CharField(model_attr='type') | ||
61 | + | ||
62 | + modified_by = indexes.CharField(model_attr='modified_by', null=True) | ||
63 | + modified_by_url = indexes.CharField(model_attr='modified_by_url', null=True) | ||
64 | + modified = indexes.DateTimeField(model_attr='modified', null=True) | ||
65 | + | ||
66 | + | ||
67 | + def get_model(self): | ||
68 | + return GitlabMergeRequest | ||
69 | + | ||
70 | + def prepare_icon_name(self, obj): | ||
71 | + return u'file' | ||
72 | + | ||
73 | + def prepare_type(self, obj): | ||
74 | + return u'merge_request' | ||
75 | + | ||
76 | +class GitlabIssueIndex(indexes.SearchIndex, indexes.Indexable): | ||
77 | + | ||
78 | + text = indexes.CharField(document=True, use_template=False, stored=False) | ||
79 | + description = indexes.CharField(model_attr='description') | ||
80 | + title = indexes.CharField(model_attr='title') | ||
81 | + tag = indexes.CharField(model_attr='state') | ||
82 | + url = indexes.CharField(model_attr='url', indexed=False) | ||
83 | + icon_name = indexes.CharField() | ||
84 | + type = indexes.CharField(model_attr='type') | ||
85 | + | ||
86 | + modified_by = indexes.CharField(model_attr='modified_by', null=True) | ||
87 | + modified_by_url = indexes.CharField(model_attr='modified_by_url', null=True) | ||
88 | + modified = indexes.DateTimeField(model_attr='modified', null=True) | ||
89 | + | ||
90 | + | ||
91 | + def get_model(self): | ||
92 | + return GitlabIssue | ||
93 | + | ||
94 | + def prepare_icon_name(self, obj): | ||
95 | + return u'align-right' | ||
96 | + | ||
97 | + def prepare_type(self, obj): | ||
98 | + return u'merge_request' | ||
99 | + | ||
100 | +class GitlabCommentIndex(indexes.SearchIndex, indexes.Indexable): | ||
101 | + | ||
102 | + text = indexes.CharField(document=True, use_template=False, stored=False) | ||
103 | + description = indexes.CharField(model_attr='description') | ||
104 | + title = indexes.CharField(model_attr='title') | ||
105 | + tag = indexes.CharField() | ||
106 | + url = indexes.CharField(model_attr='url', indexed=False) | ||
107 | + icon_name = indexes.CharField() | ||
108 | + type = indexes.CharField(model_attr='type') | ||
109 | + | ||
110 | + modified_by = indexes.CharField(model_attr='modified_by', null=True) | ||
111 | + modified_by_url = indexes.CharField(model_attr='modified_by_url', null=True) | ||
112 | + modified = indexes.DateTimeField(model_attr='modified', null=True) | ||
113 | + | ||
114 | + def prepare_tag(self, obj): | ||
115 | + return obj.tag | ||
116 | + | ||
117 | + def get_model(self): | ||
118 | + return GitlabComment | ||
119 | + | ||
120 | + def prepare_icon_name(self, obj): | ||
121 | + return u'align-right' | ||
0 | \ No newline at end of file | 122 | \ No newline at end of file |