Commit 2ab4acbcf4d7c3bdddfd9d86e00f66f45888a1b9
1 parent
84233de6
Exists in
master
and in
39 other branches
Updating search_indexes and adding a better template to display users on search
Showing
12 changed files
with
106 additions
and
49 deletions
Show diff stats
src/accounts/search_indexes.py
@@ -10,12 +10,12 @@ class UserIndex(indexes.SearchIndex, indexes.Indexable): | @@ -10,12 +10,12 @@ class UserIndex(indexes.SearchIndex, indexes.Indexable): | ||
10 | username = indexes.CharField(model_attr='username') | 10 | username = indexes.CharField(model_attr='username') |
11 | name = indexes.CharField(model_attr='get_full_name') | 11 | name = indexes.CharField(model_attr='get_full_name') |
12 | email = indexes.CharField(model_attr='email') | 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') | 13 | + institution = indexes.CharField(model_attr='institution', null=True) |
14 | + role = indexes.CharField(model_attr='role', null=True) | ||
15 | + twitter = indexes.CharField(model_attr='twitter', null=True) | ||
16 | + facebook = indexes.CharField(model_attr='facebook', null=True) | ||
17 | + google_talk = indexes.CharField(model_attr='google_talk', null=True) | ||
18 | + webpage = indexes.CharField(model_attr='webpage', null=True) | ||
19 | 19 | ||
20 | def get_model(self): | 20 | def get_model(self): |
21 | return User | 21 | return User |
src/colab/urls.py
@@ -8,7 +8,7 @@ from haystack.query import SearchQuerySet | @@ -8,7 +8,7 @@ from haystack.query import SearchQuerySet | ||
8 | from haystack.views import SearchView | 8 | from haystack.views import SearchView |
9 | 9 | ||
10 | from accounts.models import User | 10 | from accounts.models import User |
11 | -from super_archives.models import Thread | 11 | +from super_archives.models import Message |
12 | 12 | ||
13 | 13 | ||
14 | admin.autodiscover() | 14 | admin.autodiscover() |
@@ -19,7 +19,7 @@ urlpatterns = patterns('', | @@ -19,7 +19,7 @@ urlpatterns = patterns('', | ||
19 | url(r'^search/$', 'colab.deprecated.views.other.search', name='search'), | 19 | url(r'^search/$', 'colab.deprecated.views.other.search', name='search'), |
20 | url(r'^full_search/', SearchView( | 20 | url(r'^full_search/', SearchView( |
21 | template='search/search.html', | 21 | template='search/search.html', |
22 | - searchqueryset=SearchQuerySet().models(User, Thread), | 22 | + searchqueryset=SearchQuerySet().models(User, Message), |
23 | form_class=ModelSearchForm, | 23 | form_class=ModelSearchForm, |
24 | ), name='haystack_search'), | 24 | ), name='haystack_search'), |
25 | 25 |
src/super_archives/search_indexes.py
@@ -2,23 +2,36 @@ | @@ -2,23 +2,36 @@ | ||
2 | 2 | ||
3 | from haystack import indexes | 3 | from haystack import indexes |
4 | 4 | ||
5 | -from .models import Thread | 5 | +from .models import Message |
6 | 6 | ||
7 | 7 | ||
8 | -class ThreadIndex(indexes.SearchIndex, indexes.Indexable): | 8 | +class MessageIndex(indexes.SearchIndex, indexes.Indexable): |
9 | text = indexes.CharField(document=True, use_template=True) | 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.CharField(use_template=True) | 10 | + mailinglist = indexes.CharField(model_attr='thread__mailinglist__name') |
11 | + description = indexes.CharField(model_attr='body') | ||
12 | + title = indexes.CharField(model_attr='subject_clean') | ||
13 | + modified = indexes.DateTimeField(model_attr='received_time') | ||
14 | + from_address_user_full_name = indexes.CharField( | ||
15 | + model_attr='from_address__user__get_full_name', | ||
16 | + null=True, | ||
17 | + ) | ||
18 | + from_address_full_name = indexes.CharField( | ||
19 | + model_attr='from_address__get_full_name', | ||
20 | + null=True, | ||
21 | + ) | ||
22 | + from_address_user_url = indexes.CharField( | ||
23 | + model_attr='from_address__user__get_absolute_url', | ||
24 | + null=True, | ||
25 | + ) | ||
26 | + url = indexes.CharField(model_attr='url', null=True) | ||
17 | 27 | ||
18 | def get_model(self): | 28 | def get_model(self): |
19 | - return Thread | 29 | + return Message |
30 | + | ||
31 | + def get_updated_field(self): | ||
32 | + return 'received_time' | ||
20 | 33 | ||
21 | def index_queryset(self, using=None): | 34 | def index_queryset(self, using=None): |
22 | return self.get_model().objects.filter( | 35 | return self.get_model().objects.filter( |
23 | - spam=False | ||
24 | - ).exclude(subject_token='') | 36 | + thread__spam=False, spam=False |
37 | + ).exclude(thread__subject_token='') |
src/super_archives/templates/search/indexes/super_archives/message_text.txt
0 → 100644
src/super_archives/templates/search/indexes/super_archives/thread_Description.txt
src/super_archives/templates/search/indexes/super_archives/thread_Title.txt
src/super_archives/templates/search/indexes/super_archives/thread_modified.txt
src/super_archives/templates/search/indexes/super_archives/thread_text.txt
@@ -1,11 +0,0 @@ | @@ -1,11 +0,0 @@ | ||
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,0 +1,43 @@ | @@ -0,0 +1,43 @@ | ||
1 | +{% load i18n %} | ||
2 | + | ||
3 | +<li class="preview-message"> | ||
4 | + {% if result.Type %} | ||
5 | + <img alt="{{ result.Type }}" title="{{ result.Type }}" | ||
6 | + src="{{ STATIC_URL }}img/{{ result.Type }}.png" /> | ||
7 | + {% else %} | ||
8 | + <span class="glyphicon glyphicon-envelope"></span> | ||
9 | + {% endif %} | ||
10 | + | ||
11 | + {% if result.mailinglist %} | ||
12 | + <a href="{% url 'super_archives.views.list_messages' %}?list={{ result.mailinglist }}"> | ||
13 | + <span class="label label-primary">{{ result.mailinglist }}</span> | ||
14 | + </a> | ||
15 | + {% endif %} | ||
16 | + | ||
17 | + <span class="subject"> | ||
18 | + <a href="{{ result.url }}#msg-{{ result.pk }}" | ||
19 | + title="{% filter striptags|truncatewords:50 %}{{ result.description|escape }}{% endfilter %}"> | ||
20 | + {{ result.title }} | ||
21 | + </a> | ||
22 | + </span> | ||
23 | + | ||
24 | + <span class="quiet">- {{ result.description|striptags }}</span> | ||
25 | + | ||
26 | + <div class="quiet"> | ||
27 | + <span class="pull-left"> | ||
28 | + {% if result.from_address_user_url or result.from_address_full_name or result.last_author or result.Creator %} | ||
29 | + {% trans "by" %} | ||
30 | + {% endif %} | ||
31 | + | ||
32 | + {% if result.from_address_user_url %} | ||
33 | + <a href="{{ result.from_address_user_url }}">{{ result.from_address_user_full_name }}</a> | ||
34 | + {% elif result.from_address_full_name %} | ||
35 | + <span>{{ result.from_address_full_name }}</span> | ||
36 | + {% else %} | ||
37 | + {% firstof result.last_author result.Creator "" %} | ||
38 | + {% endif %} | ||
39 | + </span> | ||
40 | + | ||
41 | + <span class="pull-right">{{ result.modified|timesince }} {% trans "ago" %}</span> | ||
42 | + </div> | ||
43 | +</li> |
@@ -0,0 +1,11 @@ | @@ -0,0 +1,11 @@ | ||
1 | +{% load i18n %} | ||
2 | + | ||
3 | +<li class="preview-message"> | ||
4 | + <span class="glyphicon glyphicon-user"></span> | ||
5 | + | ||
6 | + <span class="subject"> | ||
7 | + <a href="{% url 'user_profile' result.username %}">{{ result.name }}</a> | ||
8 | + </span> | ||
9 | + | ||
10 | + <span class="quiet">{% if result.institution %}- {{ result.institution }}{% endif %}{% if result.role %} - {{ result.role }}{% endif %}</span> | ||
11 | +</li> |
src/templates/search/search.html
@@ -7,8 +7,7 @@ | @@ -7,8 +7,7 @@ | ||
7 | <h2>{% trans "Search" %}</h2> | 7 | <h2>{% trans "Search" %}</h2> |
8 | </div> | 8 | </div> |
9 | <span class="pull-right quiet"> | 9 | <span class="pull-right quiet"> |
10 | - {{ docs.numFound }} {% trans "documents found in" %} | ||
11 | - {{ docs.QTime|floatformat:3 }} {% trans "seconds" %} | 10 | + {{ page.object_list|length }} {% trans "documents found" %} |
12 | </span> | 11 | </span> |
13 | </div> | 12 | </div> |
14 | <hr/> | 13 | <hr/> |
@@ -19,7 +18,7 @@ | @@ -19,7 +18,7 @@ | ||
19 | 18 | ||
20 | <h4>{% trans "Types" %}</h4> | 19 | <h4>{% trans "Types" %}</h4> |
21 | 20 | ||
22 | - <ul class="none indent"> | 21 | + <ul class="none indent unstyled-list"> |
23 | <li {% ifequal type "wiki" %} title="{% trans "Remove filter" %}" {% endifequal %}> | 22 | <li {% ifequal type "wiki" %} title="{% trans "Remove filter" %}" {% endifequal %}> |
24 | <span class="glyphicon glyphicon-file"></span> | 23 | <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> | 24 | <a href="{% ifnotequal type "wiki" %} {% append_to_get type='wiki' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "Wiki" %}</a> |
@@ -36,14 +35,22 @@ | @@ -36,14 +35,22 @@ | ||
36 | <span class="glyphicon glyphicon-align-right"></span> | 35 | <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> | 36 | <a href="{% ifnotequal type "changeset" %} {% append_to_get type='changeset' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "Changeset" %}</a> |
38 | </li> | 37 | </li> |
38 | + <li {% ifequal type "user" %} title="{% trans "Remove filter" %}" {% endifequal %}> | ||
39 | + <span class="glyphicon glyphicon-user"></span> | ||
40 | + <a href="{% ifnotequal type "user" %} {% append_to_get type='user' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "User" %}</a> | ||
41 | + </li> | ||
39 | </ul> | 42 | </ul> |
40 | </div> | 43 | </div> |
41 | 44 | ||
42 | <div class="col-lg-10"> | 45 | <div class="col-lg-10"> |
43 | - <ul class="none indent"> | ||
44 | - {% for doc in page.object_list %} | 46 | + <ul class="none indent list-unstyled"> |
47 | + {% for result in page.object_list %} | ||
45 | <br /> | 48 | <br /> |
46 | - {% include "message-preview.html" %} | 49 | + {% if result.model_name == 'message' %} |
50 | + {% include "search/search-message-preview.html" %} | ||
51 | + {% else %} | ||
52 | + {% include "search/search-user-preview.html" %} | ||
53 | + {% endif %} | ||
47 | {% empty %} | 54 | {% empty %} |
48 | <li class="text-center"> | 55 | <li class="text-center"> |
49 | {% trans "No results for your search." %} | 56 | {% trans "No results for your search." %} |