From 9e61c6b83aee05d774fdad69bfc6c3b3bfbf5050 Mon Sep 17 00:00:00 2001 From: Luan Date: Wed, 2 Oct 2013 22:00:23 -0300 Subject: [PATCH] Adding first haystack search indexes --- src/accounts/search_indexes.py | 24 ++++++++++++++++++++++++ src/accounts/templates/search/indexes/accounts/user_text.txt | 9 +++++++++ src/colab/urls.py | 11 +++++++++++ src/super_archives/search_indexes.py | 22 ++++++++++++++++++++++ src/super_archives/templates/search/indexes/super_archives/thread_Description.txt | 3 +++ src/super_archives/templates/search/indexes/super_archives/thread_Title.txt | 3 +++ src/super_archives/templates/search/indexes/super_archives/thread_modified.txt | 3 +++ src/super_archives/templates/search/indexes/super_archives/thread_text.txt | 11 +++++++++++ src/super_archives/templates/search/indexes/super_archives/thread_url.txt | 3 +++ src/templates/base.html | 2 +- src/templates/search/search.html | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 src/accounts/search_indexes.py create mode 100644 src/accounts/templates/search/indexes/accounts/user_text.txt create mode 100644 src/super_archives/search_indexes.py create mode 100644 src/super_archives/templates/search/indexes/super_archives/thread_Description.txt create mode 100644 src/super_archives/templates/search/indexes/super_archives/thread_Title.txt create mode 100644 src/super_archives/templates/search/indexes/super_archives/thread_modified.txt create mode 100644 src/super_archives/templates/search/indexes/super_archives/thread_text.txt create mode 100644 src/super_archives/templates/search/indexes/super_archives/thread_url.txt create mode 100644 src/templates/search/search.html diff --git a/src/accounts/search_indexes.py b/src/accounts/search_indexes.py new file mode 100644 index 0000000..c452b8e --- /dev/null +++ b/src/accounts/search_indexes.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- + +from haystack import indexes + +from .models import User + + +class UserIndex(indexes.SearchIndex, indexes.Indexable): + text = indexes.CharField(document=True, use_template=True) + username = indexes.CharField(model_attr='username') + name = indexes.CharField(model_attr='get_full_name') + email = indexes.CharField(model_attr='email') + institution = indexes.CharField(model_attr='institution') + role = indexes.CharField(model_attr='role') + twitter = indexes.CharField(model_attr='twitter') + facebook = indexes.CharField(model_attr='facebook') + google_talk = indexes.CharField(model_attr='google_talk') + webpage = indexes.CharField(model_attr='webpage') + + def get_model(self): + return User + + def index_queryset(self, using=None): + return self.get_model().objects.filter(is_active=True) diff --git a/src/accounts/templates/search/indexes/accounts/user_text.txt b/src/accounts/templates/search/indexes/accounts/user_text.txt new file mode 100644 index 0000000..ee0dcb3 --- /dev/null +++ b/src/accounts/templates/search/indexes/accounts/user_text.txt @@ -0,0 +1,9 @@ +{{ object.username }} +{{ object.get_full_name }} +{{ object.email }} +{{ object.institution }} +{{ object.role }} +{{ object.twitter }} +{{ object.facebook }} +{{ object.google_talk }} +{{ object.webpage }} diff --git a/src/colab/urls.py b/src/colab/urls.py index a47d25e..51789df 100644 --- a/src/colab/urls.py +++ b/src/colab/urls.py @@ -3,6 +3,12 @@ from django.conf.urls import patterns, include, url from django.conf import settings from django.views.generic import TemplateView from django.contrib import admin +from haystack.forms import ModelSearchForm +from haystack.query import SearchQuerySet +from haystack.views import SearchView + +from accounts.models import User +from super_archives.models import Thread admin.autodiscover() @@ -11,6 +17,11 @@ urlpatterns = patterns('', url(r'^$', 'colab.deprecated.views.other.home', name='home'), url(r'^search/$', 'colab.deprecated.views.other.search', name='search'), + url(r'^full_search/', SearchView( + template='search/search.html', + searchqueryset=SearchQuerySet().models(User, Thread), + form_class=ModelSearchForm, + ), name='haystack_search'), url(r'open-data/$', TemplateView.as_view(template_name='open-data.html'), name='opendata'), diff --git a/src/super_archives/search_indexes.py b/src/super_archives/search_indexes.py new file mode 100644 index 0000000..a51c563 --- /dev/null +++ b/src/super_archives/search_indexes.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +from haystack import indexes + +from .models import Thread + + +class ThreadIndex(indexes.SearchIndex, indexes.Indexable): + text = indexes.CharField(document=True, use_template=True) + subject_token = indexes.CharField(model_attr='subject_token') + mailinglist = indexes.CharField(model_attr='mailinglist') + latest_message = indexes.CharField(model_attr='latest_message') + Description = indexes.CharField(use_template=True) + Title = indexes.CharField(use_template=True) + url = indexes.CharField(use_template=True, null=True) + modified = indexes.DateTimeField(use_template=True) + + def get_model(self): + return Thread + + def index_queryset(self, using=None): + return self.get_model().objects.filter(spam=False) diff --git a/src/super_archives/templates/search/indexes/super_archives/thread_Description.txt b/src/super_archives/templates/search/indexes/super_archives/thread_Description.txt new file mode 100644 index 0000000..bf94f5f --- /dev/null +++ b/src/super_archives/templates/search/indexes/super_archives/thread_Description.txt @@ -0,0 +1,3 @@ +{% for message in object.message_set.all %} + {{ message.Description }} +{% endfor %} diff --git a/src/super_archives/templates/search/indexes/super_archives/thread_Title.txt b/src/super_archives/templates/search/indexes/super_archives/thread_Title.txt new file mode 100644 index 0000000..4afe7f4 --- /dev/null +++ b/src/super_archives/templates/search/indexes/super_archives/thread_Title.txt @@ -0,0 +1,3 @@ +{% for message in object.message_set.all %} + {{ message.Title }} +{% endfor %} diff --git a/src/super_archives/templates/search/indexes/super_archives/thread_modified.txt b/src/super_archives/templates/search/indexes/super_archives/thread_modified.txt new file mode 100644 index 0000000..88d1f9b --- /dev/null +++ b/src/super_archives/templates/search/indexes/super_archives/thread_modified.txt @@ -0,0 +1,3 @@ +{% for message in object.message_set.all %} + {{ message.modified }} +{% endfor %} diff --git a/src/super_archives/templates/search/indexes/super_archives/thread_text.txt b/src/super_archives/templates/search/indexes/super_archives/thread_text.txt new file mode 100644 index 0000000..02b2bec --- /dev/null +++ b/src/super_archives/templates/search/indexes/super_archives/thread_text.txt @@ -0,0 +1,11 @@ +{{ object.subject_token }} +{{ object.mailinglist.name }} +{{ object.mailinglist.email }} +{{ object.mailinglist.description }} +{{ object.spam }} +{% for message in object.message_set.all %} + {{ message.Title }} + {{ message.Description }} + {{ message.url }} + {{ message.modified }} +{% endfor %} diff --git a/src/super_archives/templates/search/indexes/super_archives/thread_url.txt b/src/super_archives/templates/search/indexes/super_archives/thread_url.txt new file mode 100644 index 0000000..b315e69 --- /dev/null +++ b/src/super_archives/templates/search/indexes/super_archives/thread_url.txt @@ -0,0 +1,3 @@ +{% for message in object.message_set.all %} + {{ message.url }} +{% endfor %} diff --git a/src/templates/base.html b/src/templates/base.html index a755328..992c592 100644 --- a/src/templates/base.html +++ b/src/templates/base.html @@ -107,7 +107,7 @@ {% endif %} -