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 10 username = indexes.CharField(model_attr='username')
11 11 name = indexes.CharField(model_attr='get_full_name')
12 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 20 def get_model(self):
21 21 return User
... ...
src/colab/urls.py
... ... @@ -8,7 +8,7 @@ from haystack.query import SearchQuerySet
8 8 from haystack.views import SearchView
9 9  
10 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 14 admin.autodiscover()
... ... @@ -19,7 +19,7 @@ urlpatterns = patterns('',
19 19 url(r'^search/$', 'colab.deprecated.views.other.search', name='search'),
20 20 url(r'^full_search/', SearchView(
21 21 template='search/search.html',
22   - searchqueryset=SearchQuerySet().models(User, Thread),
  22 + searchqueryset=SearchQuerySet().models(User, Message),
23 23 form_class=ModelSearchForm,
24 24 ), name='haystack_search'),
25 25  
... ...
src/super_archives/search_indexes.py
... ... @@ -2,23 +2,36 @@
2 2  
3 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 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 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 34 def index_queryset(self, using=None):
22 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 @@
  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   -{% 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   -{% 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   -{% 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   -{{ 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   -{% 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 @@
  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 @@
  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 7 <h2>{% trans "Search" %}</h2>
8 8 </div>
9 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 11 </span>
13 12 </div>
14 13 <hr/>
... ... @@ -19,7 +18,7 @@
19 18  
20 19 <h4>{% trans "Types" %}</h4>
21 20  
22   - <ul class="none indent">
  21 + <ul class="none indent unstyled-list">
23 22 <li {% ifequal type "wiki" %} title="{% trans "Remove filter" %}" {% endifequal %}>
24 23 <span class="glyphicon glyphicon-file"></span>
25 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 35 <span class="glyphicon glyphicon-align-right"></span>
37 36 <a href="{% ifnotequal type "changeset" %} {% append_to_get type='changeset' %} {% else %} {% append_to_get type="" %} {% endifnotequal %}">{% trans "Changeset" %}</a>
38 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 42 </ul>
40 43 </div>
41 44  
42 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 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 54 {% empty %}
48 55 <li class="text-center">
49 56 {% trans "No results for your search." %}
... ...