Commit 2ab4acbcf4d7c3bdddfd9d86e00f66f45888a1b9

Authored by Luan
1 parent 84233de6

Updating search_indexes and adding a better template to display users on search

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
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +{{ object.thread.mailinglist.name }}
  2 +{{ object.thread.subject_token }}
  3 +{{ object.body }}
  4 +{{ object.subject_clean }}
  5 +{{ object.url }}
  6 +{{ object.received_time }}
src/super_archives/templates/search/indexes/super_archives/thread_Description.txt
@@ -1,3 +0,0 @@ @@ -1,3 +0,0 @@
1 -{% for message in object.message_set.all %}  
2 - {{ message.Description }}  
3 -{% endfor %}  
src/super_archives/templates/search/indexes/super_archives/thread_Title.txt
@@ -1,3 +0,0 @@ @@ -1,3 +0,0 @@
1 -{% for message in object.message_set.all %}  
2 - {{ message.Title }}  
3 -{% endfor %}  
src/super_archives/templates/search/indexes/super_archives/thread_modified.txt
@@ -1,3 +0,0 @@ @@ -1,3 +0,0 @@
1 -{% for message in object.message_set.all %}  
2 - {{ message.modified }}  
3 -{% endfor %}  
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
@@ -1,3 +0,0 @@ @@ -1,3 +0,0 @@
1 -{% for message in object.message_set.all %}  
2 - {{ message.url }}  
3 -{% endfor %}  
src/templates/search/search-message-preview.html 0 → 100644
@@ -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>
src/templates/search/search-user-preview.html 0 → 100644
@@ -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." %}