From: Radek Czajka Date: Mon, 27 Sep 2021 13:57:32 +0000 (+0200) Subject: Publishing non-findable books. X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/c9eb7a8fa361ac38b7c0f5a21cc386fc428bbf57?hp=750d370ba7b4df0c5c8f775d1b1443883abd2bf9 Publishing non-findable books. --- diff --git a/src/catalogue/forms.py b/src/catalogue/forms.py index 405ea7c48..0e5b4d10e 100644 --- a/src/catalogue/forms.py +++ b/src/catalogue/forms.py @@ -16,6 +16,7 @@ class BookImportForm(forms.Form): book_xml = forms.CharField(required=False) gallery_url = forms.CharField(required=False) days = forms.IntegerField(required=False) + hidden = forms.BooleanField(required=False) def clean(self): from django.core.files.base import ContentFile @@ -31,7 +32,9 @@ class BookImportForm(forms.Form): def save(self, **kwargs): return Book.from_xml_file(self.cleaned_data['book_xml_file'], overwrite=True, remote_gallery_url=self.cleaned_data['gallery_url'], - days=self.cleaned_data['days'], **kwargs) + days=self.cleaned_data['days'], + findable=not self.cleaned_data['hidden'], + **kwargs) FORMATS = [(f, f.upper()) for f in Book.ebook_formats] diff --git a/src/search/index.py b/src/search/index.py index 2d84cb4d7..06d2c4a6e 100644 --- a/src/search/index.py +++ b/src/search/index.py @@ -636,7 +636,7 @@ class SearchResult(object): if self._book is not None: return self._book try: - self._book = catalogue.models.Book.objects.get(id=self.book_id) + self._book = catalogue.models.Book.objects.get(id=self.book_id, findable=True) except catalogue.models.Book.DoesNotExist: self._book = None return self._book @@ -903,7 +903,7 @@ class Search(SolrIndex): def search_by_author(self, words): from catalogue.models import Book - books = Book.objects.filter(parent=None).order_by('-popularity__count') + books = Book.objects.filter(parent=None, findable=True).order_by('-popularity__count') for word in words: books = books.filter(cached_author__iregex='\m%s\M' % word).select_related('popularity__count') return [SearchResult.from_book(book, how_found='search_by_author', query_terms=words) for book in books[:30]] @@ -977,7 +977,7 @@ class Search(SolrIndex): idx += 1 except IOError as e: - book = catalogue.models.Book.objects.filter(id=book_id) + book = catalogue.models.Book.objects.filter(id=book_id, findable=True) if not book: log.error("Book does not exist for book id = %d" % book_id) elif not book.get().children.exists():