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 @@ |
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 | 122 | \ No newline at end of file | ... | ... |