allow null values on fields
[prawokultury.git] / migdal / search_indexes.py
index 6223b6e..4257483 100644 (file)
@@ -1,39 +1,26 @@
+from django.conf import settings
 import datetime
 from haystack import indexes
 from migdal.models import Entry
-from django.conf import settings
-from copy import copy
+from migdal.helpers import add_translatable_index
 
 
-class EntryIndex(indexes.SearchIndex, indexes.Indexable):
-    date = indexes.DateTimeField(indexed=True)
-    author = indexes.CharField()
+class EntryIndex(indexes.RealTimeSearchIndex, indexes.Indexable):
+    date = indexes.DateTimeField(indexed=True, model_attr="date")
+    author = indexes.CharField(model_attr="author")
 
     def get_model(self):
         return Entry
 
     def index_queryset(self):
         """Used when the entire index for model is updated."""
-        return self.get_model().objects.filter(date__lte=datetime.datetime.now())
-
-
-def add_translatable(index_class, fields, languages=None):
-    """Adds some translatable fields to a search index, and a getter."""
-    if languages is None:
-        languages = settings.LANGUAGES
-    for name, field in fields.items():
-        for lang_code, lang_name in languages:
-            new_field = copy(field)
-            fname = "%s_%s" % (name, lang_code)
-            new_field.index_fieldname = fname
-            setattr(index_class, fname, new_field)
-            index_class.fields[fname] = new_field
-
-
-add_translatable(EntryIndex, {
-    'title': indexes.CharField(indexed=True, document=False),
-    'lead': indexes.CharField(indexed=True, document=False),
-    'body': indexes.CharField(indexed=True, document=False)
+        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)
     })