fix
[wolnelektury.git] / src / search / index.py
index 9784d49..4606f57 100644 (file)
@@ -9,7 +9,6 @@ import os
 import re
 from django.conf import settings
 from librarian import dcparser
 import re
 from django.conf import settings
 from librarian import dcparser
-import librarian.meta.types.date
 import librarian.meta.types.person
 import librarian.meta.types.text
 from librarian.parser import WLDocument
 import librarian.meta.types.person
 import librarian.meta.types.text
 from librarian.parser import WLDocument
@@ -245,17 +244,18 @@ class Index(SolrIndex):
             doc['parent_id'] = int(book.parent.id)
         return doc
 
             doc['parent_id'] = int(book.parent.id)
         return doc
 
-    def remove_book(self, book, remove_snippets=True):
+    def remove_book(self, book, remove_snippets=True, legacy=True):
         """Removes a book from search index.
         book - Book instance."""
         """Removes a book from search index.
         book - Book instance."""
-        self.delete_query(self.index.Q(book_id=book.id))
+        if legacy:
+          self.delete_query(self.index.Q(book_id=book.id))
 
 
-        if remove_snippets:
+          if remove_snippets:
             snippets = Snippets(book.id)
             snippets.remove()
         self.remove_snippets(book)
 
             snippets = Snippets(book.id)
             snippets.remove()
         self.remove_snippets(book)
 
-    def index_book(self, book, book_info=None, overwrite=True):
+    def index_book(self, book, book_info=None, overwrite=True, legacy=True):
         """
         Indexes the book.
         Creates a lucene document for extracted metadata
         """
         Indexes the book.
         Creates a lucene document for extracted metadata
@@ -266,7 +266,7 @@ class Index(SolrIndex):
         if overwrite:
             # we don't remove snippets, since they might be still needed by
             # threads using not reopened index
         if overwrite:
             # we don't remove snippets, since they might be still needed by
             # threads using not reopened index
-            self.remove_book(book, remove_snippets=False)
+            self.remove_book(book, remove_snippets=False, legacy=legacy)
 
         book_doc = self.create_book_doc(book)
         meta_fields = self.extract_metadata(book, book_info, dc_only=[
 
         book_doc = self.create_book_doc(book)
         meta_fields = self.extract_metadata(book, book_info, dc_only=[
@@ -279,7 +279,8 @@ class Index(SolrIndex):
             book_doc[n] = f
 
         book_doc['uid'] = "book%s" % book_doc['book_id']
             book_doc[n] = f
 
         book_doc['uid'] = "book%s" % book_doc['book_id']
-        self.index.add(book_doc)
+        if legacy:
+            self.index.add(book_doc)
         del book_doc
         book_fields = {
             'title': meta_fields['title'],
         del book_doc
         book_fields = {
             'title': meta_fields['title'],
@@ -291,7 +292,7 @@ class Index(SolrIndex):
             if tag_name in meta_fields:
                 book_fields[tag_name] = meta_fields[tag_name]
 
             if tag_name in meta_fields:
                 book_fields[tag_name] = meta_fields[tag_name]
 
-        self.index_content(book, book_fields=book_fields)
+        self.index_content(book, book_fields=book_fields, legacy=legacy)
 
     master_tags = [
         'opowiadanie',
 
     master_tags = [
         'opowiadanie',
@@ -348,9 +349,6 @@ class Index(SolrIndex):
                     else:
                         persons = ', '.join(map(str, p))
                     fields[field.name] = persons
                     else:
                         persons = ', '.join(map(str, p))
                     fields[field.name] = persons
-                elif issubclass(type_indicator, librarian.meta.types.date.DateValue):
-                    dt = getattr(book_info, field.name)
-                    fields[field.name] = dt
 
         # get published date
         pd = None
 
         # get published date
         pd = None
@@ -382,7 +380,7 @@ class Index(SolrIndex):
             if master.tag in self.master_tags:
                 return master
 
             if master.tag in self.master_tags:
                 return master
 
-    def index_content(self, book, book_fields):
+    def index_content(self, book, book_fields, legacy=True):
         """
         Walks the book XML and extract content from it.
         Adds parts for each header tag and for each fragment.
         """
         Walks the book XML and extract content from it.
         Adds parts for each header tag and for each fragment.
@@ -484,7 +482,8 @@ class Index(SolrIndex):
                         doc = add_part(snippets, header_index=position, header_type=header.tag,
                                        text=''.join(footnote))
                         self.add_snippet(book, doc)
                         doc = add_part(snippets, header_index=position, header_type=header.tag,
                                        text=''.join(footnote))
                         self.add_snippet(book, doc)
-                        self.index.add(doc)
+                        if legacy:
+                            self.index.add(doc)
                         footnote = []
 
                     # handle fragments and themes.
                         footnote = []
 
                     # handle fragments and themes.
@@ -520,7 +519,8 @@ class Index(SolrIndex):
                                        themes=frag['themes'])
                         # Add searchable fragment
                         self.add_snippet(book, doc)
                                        themes=frag['themes'])
                         # Add searchable fragment
                         self.add_snippet(book, doc)
-                        self.index.add(doc)
+                        if legacy:
+                            self.index.add(doc)
 
                         # Collect content.
 
 
                         # Collect content.
 
@@ -533,7 +533,8 @@ class Index(SolrIndex):
                                header_type=header.tag, text=fix_format(content))
 
                 self.add_snippet(book, doc)
                                header_type=header.tag, text=fix_format(content))
 
                 self.add_snippet(book, doc)
-                self.index.add(doc)
+                if legacy:
+                    self.index.add(doc)
 
         finally:
             snippets.close()
 
         finally:
             snippets.close()