diff --git a/colab/plugins/noosfero/search_indexes.py b/colab/plugins/noosfero/search_indexes.py new file mode 100644 index 0000000..4a57657 --- /dev/null +++ b/colab/plugins/noosfero/search_indexes.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- + +import string + +from haystack import indexes +from haystack.utils import log as logging + +from .models import (NoosferoArticle, NoosferoCommunity) + + +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 NoosferoCommunityIndex(indexes.SearchIndex, indexes.Indexable): + text = indexes.CharField(document=True, use_template=True, stored=False) + title = indexes.CharField(model_attr='name') + description = indexes.CharField(model_attr='description', null=True) + url = indexes.CharField(model_attr='url', indexed=False) + icon_name = indexes.CharField() + type = indexes.CharField() + modified = indexes.DateTimeField(model_attr='modified', null=True) + created_at = indexes.DateTimeField(model_attr='created_at', null=True) + category = indexes.MultiValueField() + + def prepare_category(self, obj): + return [category.name for category in \ + obj.categories.all()] + + def prepare_icon_name(self, obj): + return u'file' + + def get_ful_name(self): + self.objs.name + + def get_model(self): + return NoosferoCommunity + + def prepare_type(self, obj): + return u'noosfero_community' + + +class NoosferoArticleIndex(indexes.SearchIndex, indexes.Indexable): + + text = indexes.CharField(document=True, use_template=True, stored=False) + title = indexes.CharField(model_attr='title') + body = indexes.CharField(model_attr='body', null=True) + url = indexes.CharField(model_attr='url', indexed=False) + icon_name = indexes.CharField() + type = indexes.CharField(model_attr='type') + modified = indexes.DateTimeField(model_attr='modified', null=True) + created_at = indexes.DateTimeField(model_attr='created_at', null=True) + category = indexes.MultiValueField() + + def get_model(self): + return NoosferoArticle + + def prepare_category(self, obj): + return [category.name for category in \ + obj.categories.all()] + + def prepare_icon_name(self, obj): + return u'file' + + def prepare_type(self, obj): + return u'noosfero_articles' diff --git a/colab/plugins/noosfero/templates/search/indexes/noosfero/noosferoarticle_text.txt b/colab/plugins/noosfero/templates/search/indexes/noosfero/noosferoarticle_text.txt new file mode 100644 index 0000000..755f69c --- /dev/null +++ b/colab/plugins/noosfero/templates/search/indexes/noosfero/noosferoarticle_text.txt @@ -0,0 +1,4 @@ +{{ object.title }} +{{ object.body }} +{{ object.url }} +{{ object.category }} diff --git a/colab/plugins/noosfero/templates/search/indexes/noosfero/noosferocommunity_text.txt b/colab/plugins/noosfero/templates/search/indexes/noosfero/noosferocommunity_text.txt new file mode 100644 index 0000000..739864a --- /dev/null +++ b/colab/plugins/noosfero/templates/search/indexes/noosfero/noosferocommunity_text.txt @@ -0,0 +1,4 @@ +{{ object.name }} +{{ object.description }} +{{ object.url }} +{{ object.category }} -- libgit2 0.21.2