prepare date for solr
[django-migdal.git] / migdal / search_indexes.py
index 27169f3..91f7ab7 100644 (file)
@@ -1,27 +1,40 @@
-import datetime
+# -*- coding: utf-8 -*-
+# This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
 from django.conf import settings
 from haystack import indexes
-from fnpdjango.utils.models.translation import add_translatable_index
+from fnpdjango.utils.models.translation import add_translatable_index, localize_field
 from migdal.models import Entry
 
 
-class EntryIndex(indexes.RealTimeSearchIndex, indexes.Indexable):
+class EntryIndex(indexes.SearchIndex, indexes.Indexable):
+    text = indexes.CharField(
+        null=True,
+        model_attr=localize_field('body', settings.LANGUAGE_CODE),
+        document=True)
     date = indexes.DateTimeField(indexed=True, model_attr="date")
     author = indexes.CharField(model_attr="author")
 
+    def prepare_date(self, obj):
+        date = u''
+        if 'date' in self.prepared_data:
+            date = self.prepared_data['date'].strftime('%Y-%m-%dT%H:%M:%SZ')
+        return date
+
     def get_model(self):
         return Entry
 
-    def index_queryset(self):
-        """Used when the entire index for model is updated."""
-        return self.get_model().objects.all()  # filter(date__lte=datetime.datetime.now())
-
 
 add_translatable_index(EntryIndex, {
     'title': indexes.CharField(null=True),
     'lead': indexes.CharField(null=True),
-    'body': indexes.CharField(null=True)
     })
 
-
-getattr(EntryIndex, "body_%s" % settings.LANGUAGE_CODE).document = True
+add_translatable_index(EntryIndex, {
+    'title': indexes.CharField(null=True),
+    'lead': indexes.CharField(null=True),
+    'body': indexes.CharField(null=True)
+    }, 
+    (lang for lang in settings.LANGUAGES if lang[0] != settings.LANGUAGE_CODE)
+)