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 | ... | ... |