Commit 9e61c6b83aee05d774fdad69bfc6c3b3bfbf5050

Authored by Luan
1 parent 82526dcc

Adding first haystack search indexes

src/accounts/search_indexes.py 0 → 100644
... ... @@ -0,0 +1,24 @@
  1 +# -*- coding: utf-8 -*-
  2 +
  3 +from haystack import indexes
  4 +
  5 +from .models import User
  6 +
  7 +
  8 +class UserIndex(indexes.SearchIndex, indexes.Indexable):
  9 + text = indexes.CharField(document=True, use_template=True)
  10 + username = indexes.CharField(model_attr='username')
  11 + name = indexes.CharField(model_attr='get_full_name')
  12 + email = indexes.CharField(model_attr='email')
  13 + institution = indexes.CharField(model_attr='institution')
  14 + role = indexes.CharField(model_attr='role')
  15 + twitter = indexes.CharField(model_attr='twitter')
  16 + facebook = indexes.CharField(model_attr='facebook')
  17 + google_talk = indexes.CharField(model_attr='google_talk')
  18 + webpage = indexes.CharField(model_attr='webpage')
  19 +
  20 + def get_model(self):
  21 + return User
  22 +
  23 + def index_queryset(self, using=None):
  24 + return self.get_model().objects.filter(is_active=True)
... ...
src/accounts/templates/search/indexes/accounts/user_text.txt 0 → 100644
... ... @@ -0,0 +1,9 @@
  1 +{{ object.username }}
  2 +{{ object.get_full_name }}
  3 +{{ object.email }}
  4 +{{ object.institution }}
  5 +{{ object.role }}
  6 +{{ object.twitter }}
  7 +{{ object.facebook }}
  8 +{{ object.google_talk }}
  9 +{{ object.webpage }}
... ...
src/colab/urls.py
... ... @@ -3,6 +3,12 @@ from django.conf.urls import patterns, include, url
3 3 from django.conf import settings
4 4 from django.views.generic import TemplateView
5 5 from django.contrib import admin
  6 +from haystack.forms import ModelSearchForm
  7 +from haystack.query import SearchQuerySet
  8 +from haystack.views import SearchView
  9 +
  10 +from accounts.models import User
  11 +from super_archives.models import Thread
6 12  
7 13  
8 14 admin.autodiscover()
... ... @@ -11,6 +17,11 @@ urlpatterns = patterns('',
11 17 url(r'^$', 'colab.deprecated.views.other.home', name='home'),
12 18  
13 19 url(r'^search/$', 'colab.deprecated.views.other.search', name='search'),
  20 + url(r'^full_search/', SearchView(
  21 + template='search/search.html',
  22 + searchqueryset=SearchQuerySet().models(User, Thread),
  23 + form_class=ModelSearchForm,
  24 + ), name='haystack_search'),
14 25  
15 26 url(r'open-data/$', TemplateView.as_view(template_name='open-data.html'),
16 27 name='opendata'),
... ...
src/super_archives/search_indexes.py 0 → 100644
... ... @@ -0,0 +1,22 @@
  1 +# -*- coding: utf-8 -*-
  2 +
  3 +from haystack import indexes
  4 +
  5 +from .models import Thread
  6 +
  7 +
  8 +class ThreadIndex(indexes.SearchIndex, indexes.Indexable):
  9 + text = indexes.CharField(document=True, use_template=True)
  10 + subject_token = indexes.CharField(model_attr='subject_token')
  11 + mailinglist = indexes.CharField(model_attr='mailinglist')
  12 + latest_message = indexes.CharField(model_attr='latest_message')
  13 + Description = indexes.CharField(use_template=True)
  14 + Title = indexes.CharField(use_template=True)
  15 + url = indexes.CharField(use_template=True, null=True)
  16 + modified = indexes.DateTimeField(use_template=True)
  17 +
  18 + def get_model(self):
  19 + return Thread
  20 +
  21 + def index_queryset(self, using=None):
  22 + return self.get_model().objects.filter(spam=False)
... ...
src/super_archives/templates/search/indexes/super_archives/thread_Description.txt 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +{% for message in object.message_set.all %}
  2 + {{ message.Description }}
  3 +{% endfor %}
... ...
src/super_archives/templates/search/indexes/super_archives/thread_Title.txt 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +{% for message in object.message_set.all %}
  2 + {{ message.Title }}
  3 +{% endfor %}
... ...
src/super_archives/templates/search/indexes/super_archives/thread_modified.txt 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +{% for message in object.message_set.all %}
  2 + {{ message.modified }}
  3 +{% endfor %}
... ...
src/super_archives/templates/search/indexes/super_archives/thread_text.txt 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +{{ object.subject_token }}
  2 +{{ object.mailinglist.name }}
  3 +{{ object.mailinglist.email }}
  4 +{{ object.mailinglist.description }}
  5 +{{ object.spam }}
  6 +{% for message in object.message_set.all %}
  7 + {{ message.Title }}
  8 + {{ message.Description }}
  9 + {{ message.url }}
  10 + {{ message.modified }}
  11 +{% endfor %}
... ...
src/super_archives/templates/search/indexes/super_archives/thread_url.txt 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +{% for message in object.message_set.all %}
  2 + {{ message.url }}
  3 +{% endfor %}
... ...
src/templates/base.html
... ... @@ -107,7 +107,7 @@
107 107 {% endif %}
108 108 </ul>
109 109  
110   - <form action="/search/" method="GET" id="search-form" class="navbar-form navbar-right hidden-xs hidden-sm" role="search">
  110 + <form action="{% url 'haystack_search' %}" method="GET" id="search-form" class="navbar-form navbar-right hidden-xs hidden-sm" role="search">
111 111 <div class="form-group">
112 112 <label class="sr-only" for="header-searchbox">{% trans 'Search here...' %}</label>
113 113 <input name="q" id="header-searchbox"
... ...
src/templates/search/search.html 0 → 100644
... ... @@ -0,0 +1,74 @@
  1 +{% extends "base.html" %}
  2 +{% load i18n %}
  3 +{% load append_to_get %}
  4 +{% block main-content %}
  5 + <div class="row">
  6 + <div class="col-lg-2">
  7 + <h2>{% trans "Search" %}</h2>
  8 + </div>
  9 + <span class="pull-right quiet">
  10 + {{ docs.numFound }} {% trans "documents found in" %}
  11 + {{ docs.QTime|floatformat:3 }} {% trans "seconds" %}
  12 + </span>
  13 + </div>
  14 + <hr/>
  15 +
  16 + <div class="row">
  17 + <div class="col-lg-2">
  18 + <h3>{% trans "Filters" %}</h3>
  19 +
  20 + <h4>{% trans "Types" %}</h4>
  21 +
  22 + <ul class="none indent">
  23 + <li {% ifequal type "wiki" %} title="{% trans "Remove filter" %}" {% endifequal %}>
  24 + <span class="glyphicon glyphicon-file"></span>
  25 + <a href="{% ifnotequal type "wiki" %} {% append_to_get type='wiki' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "Wiki" %}</a>
  26 + </li>
  27 + <li {% ifequal type "thread" %} title="{% trans "Remove filter" %}" {% endifequal %}>
  28 + <span class="glyphicon glyphicon-envelope"></span>
  29 + <a href="{% ifnotequal type "thread" %} {% append_to_get type='thread' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "Discussion" %}</a>
  30 + </li>
  31 + <li {% ifequal type "ticket" %} title="{% trans "Remove filter" %}" {% endifequal %}>
  32 + <span class="glyphicon glyphicon-tag"></span>
  33 + <a href="{% ifnotequal type "ticket" %} {% append_to_get type='ticket' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "Ticket" %}</a>
  34 + </li>
  35 + <li {% ifequal type "changeset" %} title="{% trans "Remove filter" %}" {% endifequal %}>
  36 + <span class="glyphicon glyphicon-align-right"></span>
  37 + <a href="{% ifnotequal type "changeset" %} {% append_to_get type='changeset' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "Changeset" %}</a>
  38 + </li>
  39 + </ul>
  40 + </div>
  41 +
  42 + <div class="col-lg-10">
  43 + <ul class="none indent">
  44 + {% for doc in page.object_list %}
  45 + <br />
  46 + {% include "message-preview.html" %}
  47 + {% empty %}
  48 + <li class="text-center">
  49 + {% trans "No results for your search." %}
  50 + </li>
  51 + {% endfor %}
  52 + </ul>
  53 +
  54 + {% if docs.numFound %}
  55 + <div>
  56 + <span>
  57 + {% if docs.has_previous %}
  58 + <a href="{% append_to_get p=docs.previous_page_number %}">{% trans "Previous" %}</a>
  59 + {% endif %}
  60 +
  61 + <span>
  62 + {% trans "Page" %} {{ docs.page_num }} {% trans "of" %} {{ docs.num_of_pages }}
  63 + </span>
  64 +
  65 + {% if docs.has_next %}
  66 + <a href="{% append_to_get p=docs.next_page_number %}">{% trans "Next" %}</a>
  67 + {% endif %}
  68 + </span>
  69 + </div>
  70 + </div>
  71 + {% endif %}
  72 + </div>
  73 +
  74 +{% endblock %}
... ...