diff --git a/src/search/base_indexes.py b/src/search/base_indexes.py index 4fed1ae..235f637 100644 --- a/src/search/base_indexes.py +++ b/src/search/base_indexes.py @@ -32,20 +32,23 @@ class BaseIndex(indexes.SearchIndex): return math.log(obj.hits) def prepare(self, obj): + self.author_obj = None + if hasattr(obj, 'get_author'): + self.author_obj = obj.get_author() + data = super(BaseIndex, self).prepare(obj) data['boost'] = self.get_boost(obj) + return data def prepare_author(self, obj): - author = obj.get_author() - if author: - return author.username + if self.author_obj: + return self.author_obj.username return obj.author def prepare_author_url(self, obj): - author = obj.get_author() - if author: - return author.get_absolute_url() + if self.author_obj: + return self.author_obj.get_absolute_url() return None def prepare_fullname(self, obj): @@ -53,30 +56,37 @@ class BaseIndex(indexes.SearchIndex): modified_by = obj.get_modified_by() if modified_by: return modified_by.get_full_name() - return None - else: - author = obj.get_author() - if author: - return author.get_full_name() - return obj.author + if self.author_obj: + return self.author_obj.get_full_name() + return obj.author def prepare_fullname_and_username(self, obj): - author = obj.get_author() - if not author: + if hasattr(obj, 'modified_by'): + modified_by = obj.get_modified_by() + if modified_by: + return u'{}\n{}'.format( + modified_by.get_full_name(), + modified_by.username, + ) + if not self.author_obj: return obj.author return u'{}\n{}'.format( - author.get_full_name(), - author.username, + self.author_obj.get_full_name(), + self.author_obj.username, ) def prepare_modified_by(self, obj): if hasattr(obj, 'modified_by'): return obj.modified_by - return None + if self.author_obj: + return self.author_obj.get_full_name() + return obj.author def prepare_modified_by_url(self, obj): if hasattr(obj, 'modified_by'): modified_by = obj.get_modified_by() if modified_by: return modified_by.get_absolute_url() + if self.author_obj: + return self.author_obj.get_absolute_url() return None diff --git a/src/super_archives/search_indexes.py b/src/super_archives/search_indexes.py index 94124b3..5d0493e 100644 --- a/src/super_archives/search_indexes.py +++ b/src/super_archives/search_indexes.py @@ -50,25 +50,33 @@ class ThreadIndex(BaseIndex, indexes.Indexable): ) def prepare_author(self, obj): - return obj.latest_message.author + first_message = obj.message_set.first() + return first_message.from_address.get_full_name() def prepare_author_url(self, obj): first_message = obj.message_set.first() - if first_message.from_address.user: - return first_message.from_address.user.get_absolute_url() - return None + return first_message.author_url def prepare_modified_by(self, obj): - return obj.latest_message.author + modified_by = obj.latest_message.modified_by + if modified_by: + return modified_by + return obj.message_set.first().author def prepare_modified_by_url(self, obj): - return obj.latest_message.author_url + modified_by_url = obj.latest_message.modified_by_url + if modified_by_url: + return modified_by_url + return None def prepare_created(self, obj): return obj.message_set.first().received_time def prepare_fullname(self, obj): - return obj.latest_message.from_address.get_full_name() + fullname = obj.latest_message.from_address.get_full_name() + if not fullname: + fullname = obj.message_set.first().from_address.get_full_name() + return fullname def prepare_icon_name(self, obj): return u'envelope' diff --git a/src/super_archives/templates/message-preview.html b/src/super_archives/templates/message-preview.html index 3454f95..8405e27 100644 --- a/src/super_archives/templates/message-preview.html +++ b/src/super_archives/templates/message-preview.html @@ -38,28 +38,24 @@ {% if result.fullname or result.modified or result.modified_by %}
- {% if result.fullname or result.modified_by %} + {% if result.modified_by %} {% trans "by" %} - {% if result.modified_by and result.modified_by_url %} + {% if result.modified_by_url %} - {% if query %} - {% highlight result.modified_by with query %} - {% else %} - {{ result.modified_by }} - {% endif %} - - {% elif result.modified_by and not result.modified_by_url %} - {{ result.modified_by }} - {% elif result.fullname and result.author_url %} - - {% if query %} - {% highlight result.fullname with query %} - {% else %} - {{ result.fullname }} - {% endif %} + {% else %} + + {% endif %} + + {% if query %} + {% highlight result.modified_by with query %} + {% else %} + {{ result.modified_by }} + {% endif %} + + {% if result.modified_by_url %} {% else %} - {{ result.fullname }} + {% endif %} {% else %} -- libgit2 0.21.2