search_indexes.py
3.97 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
# -*- coding: utf-8 -*-
import string
from haystack import indexes
from haystack.utils import log as logging
from .models import (GitlabProject, GitlabMergeRequest,
GitlabIssue, GitlabComment)
logger = logging.getLogger('haystack')
# The string maketrans always return a string encoded with latin1
# http://stackoverflow.com/questions/1324067/how-do-i-get-str-translate-to-work-with-unicode-strings
table = string.maketrans(
string.punctuation,
'.' * len(string.punctuation)
).decode('latin1')
class GitlabProjectIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=False, stored=False)
title = indexes.CharField(model_attr='name')
description = indexes.CharField(model_attr='description', null=True)
tag = indexes.CharField()
url = indexes.CharField(model_attr='url', indexed=False)
icon_name = indexes.CharField()
type = indexes.CharField()
created = indexes.DateTimeField(model_attr='created_at', null=True)
def prepare_tag(self, obj):
return "{}".format(obj.name_with_namespace.split('/')[0].strip())
def prepare_icon_name(self, obj):
return u'file'
def get_ful_name(self):
self.objs.name
def get_model(self):
return GitlabProject
def prepare_type(self, obj):
return u'gitlab'
class GitlabMergeRequestIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=False, stored=False)
title = indexes.CharField(model_attr='title')
description = indexes.CharField(model_attr='description')
tag = indexes.CharField(model_attr='state')
url = indexes.CharField(model_attr='url', indexed=False)
icon_name = indexes.CharField()
type = indexes.CharField(model_attr='type')
modified_by = indexes.CharField(model_attr='modified_by', null=True)
modified_by_url = indexes.CharField(model_attr='modified_by_url',
null=True)
modified = indexes.DateTimeField(model_attr='created_at', null=True)
def get_model(self):
return GitlabMergeRequest
def prepare_icon_name(self, obj):
return u'file'
def prepare_type(self, obj):
return u'merge_request'
class GitlabIssueIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=False, stored=False)
title = indexes.CharField(model_attr='title')
description = indexes.CharField(model_attr='description')
tag = indexes.CharField(model_attr='state')
url = indexes.CharField(model_attr='url', indexed=False)
icon_name = indexes.CharField()
type = indexes.CharField(model_attr='type')
modified_by = indexes.CharField(model_attr='modified_by', null=True)
modified_by_url = indexes.CharField(model_attr='modified_by_url',
null=True)
modified = indexes.DateTimeField(model_attr='created_at', null=True)
def get_model(self):
return GitlabIssue
def prepare_icon_name(self, obj):
return u'align-right'
def prepare_type(self, obj):
return u'merge_request'
class GitlabCommentIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=False, stored=False)
title = indexes.CharField(model_attr='title')
description = indexes.CharField(model_attr='description')
tag = indexes.CharField()
url = indexes.CharField(model_attr='url', indexed=False)
icon_name = indexes.CharField()
type = indexes.CharField(model_attr='type')
modified_by = indexes.CharField(model_attr='modified_by', null=True)
modified_by_url = indexes.CharField(model_attr='modified_by_url',
null=True)
modified = indexes.DateTimeField(model_attr='created_at', null=True)
def get_model(self):
return GitlabComment
def prepare_icon_name(self, obj):
return u'align-right'
def prepare_tag(self, obj):
return obj.tag