fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Separate club join view for app users.
[wolnelektury.git]
/
src
/
search
/
index.py
diff --git
a/src/search/index.py
b/src/search/index.py
index
a712b07
..
9f87b99
100644
(file)
--- a/
src/search/index.py
+++ b/
src/search/index.py
@@
-1,7
+1,7
@@
# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
-from functools import total_ordering
+from functools import
reduce,
total_ordering
from itertools import chain
import logging
import operator
from itertools import chain
import logging
import operator
@@
-634,7
+634,10
@@
class SearchResult(object):
def get_book(self):
if self._book is not None:
return self._book
def get_book(self):
if self._book is not None:
return self._book
- self._book = catalogue.models.Book.objects.get(id=self.book_id)
+ try:
+ self._book = catalogue.models.Book.objects.get(id=self.book_id)
+ except catalogue.models.Book.DoesNotExist:
+ self._book = None
return self._book
book = property(get_book)
return self._book
book = property(get_book)
@@
-713,12
+716,12
@@
class SearchResult(object):
break
def theme_by_name(n):
break
def theme_by_name(n):
- th =
filter(lambda t: t.name == n, themes
)
+ th =
list(filter(lambda t: t.name == n, themes)
)
if th:
return th[0]
else:
return None
if th:
return th[0]
else:
return None
- themes_hit =
filter(lambda a: a is not None, map(theme_by_name, themes_hit
))
+ themes_hit =
list(filter(lambda a: a is not None, map(theme_by_name, themes_hit)
))
m = {'score': f[self.SCORE],
'fragment': frag,
m = {'score': f[self.SCORE],
'fragment': frag,
@@
-746,13
+749,17
@@
class SearchResult(object):
books[r.book_id] = r
return books.values()
books[r.book_id] = r
return books.values()
+ def get_sort_key(self):
+ return (-self.score,
+ self.published_date,
+ self.book.sort_key_author if self.book else '',
+ self.book.sort_key if self.book else '')
+
def __lt__(self, other):
def __lt__(self, other):
- return (-self.score, self.published_date, self.book.sort_key_author, self.book.sort_key) > \
- (-other.score, other.published_date, other.book.sort_key_author, other.book.sort_key)
+ return self.get_sort_key() > other.get_sort_key()
def __eq__(self, other):
def __eq__(self, other):
- return (self.score, self.published_date, self.book.sort_key_author, self.book.sort_key) == \
- (other.score, other.published_date, other.book.sort_key_author, other.book.sort_key)
+ return self.get_sort_key() == other.get_sort_key()
def __len__(self):
return len(self.hits)
def __len__(self):
return len(self.hits)