Guest User

Untitled

a guest
Apr 22nd, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. diff --git a/haystack/indexes.py b/haystack/indexes.py
  2. index 0fc5cd9..441d16d 100644
  3. --- a/haystack/indexes.py
  4. +++ b/haystack/indexes.py
  5. @@ -62,18 +62,6 @@ class SearchIndex(object):
  6. if not len(content_fields) == 1:
  7. raise SearchFieldError("An index must have one (and only one) SearchField with document=True.")
  8.  
  9. - def _setup_save(self, model):
  10. - signals.post_save.connect(self.update_object, sender=model)
  11. -
  12. - def _setup_delete(self, model):
  13. - signals.post_delete.connect(self.remove_object, sender=model)
  14. -
  15. - def _teardown_save(self, model):
  16. - signals.post_save.disconnect(self.update_object, sender=model)
  17. -
  18. - def _teardown_delete(self, model):
  19. - signals.post_delete.disconnect(self.remove_object, sender=model)
  20. -
  21. def get_queryset(self):
  22. """
  23. Get the default QuerySet to index when doing a full update.
  24. @@ -175,7 +163,25 @@ class SearchIndex(object):
  25. return self.model._default_manager.all()
  26.  
  27.  
  28. -class BasicSearchIndex(SearchIndex):
  29. +class SignalOnChange(object):
  30. + """
  31. + Signals that can be attached to an index to allow automatic reindexing
  32. + on save and delete
  33. + """
  34. + def _setup_save(self, model):
  35. + signals.post_save.connect(self.update_object, sender=model)
  36. +
  37. + def _setup_delete(self, model):
  38. + signals.post_delete.connect(self.remove_object, sender=model)
  39. +
  40. + def _teardown_save(self, model):
  41. + signals.post_save.disconnect(self.update_object, sender=model)
  42. +
  43. + def _teardown_delete(self, model):
  44. + signals.post_delete.disconnect(self.remove_object, sender=model)
  45. +
  46. +
  47. +class BasicSearchIndex(SearchIndex, SignalOnChange):
  48. text = CharField(document=True, use_template=True)
  49.  
  50.  
  51. diff --git a/tests/solr_tests/tests/solr_backend.py b/tests/solr_tests/tests/solr_backend.py
  52. index fd6e009..1acfb42 100644
  53. --- a/tests/solr_tests/tests/solr_backend.py
  54. +++ b/tests/solr_tests/tests/solr_backend.py
  55. @@ -15,13 +15,13 @@ except NameError:
  56. from sets import Set as set
  57.  
  58.  
  59. -class SolrMockSearchIndex(indexes.SearchIndex):
  60. +class SolrMockSearchIndex(indexes.SearchIndex, indexes.SignalOnChange):
  61. text = indexes.CharField(document=True, use_template=True)
  62. name = indexes.CharField(model_attr='author')
  63. pub_date = indexes.DateField(model_attr='pub_date')
  64.  
  65.  
  66. -class SolrMaintainTypeMockSearchIndex(indexes.SearchIndex):
  67. +class SolrMaintainTypeMockSearchIndex(indexes.SearchIndex, indexes.SignalOnChange):
  68. text = indexes.CharField(document=True, use_template=True)
  69. month = indexes.CharField(indexed=False)
  70. pub_date = indexes.DateField(model_attr='pub_date')
  71. diff --git a/tests/whoosh_tests/tests/whoosh_backend.py b/tests/whoosh_tests/tests/whoosh_backend.py
  72. index b426e67..c893fe6 100644
  73. --- a/tests/whoosh_tests/tests/whoosh_backend.py
  74. +++ b/tests/whoosh_tests/tests/whoosh_backend.py
  75. @@ -18,13 +18,13 @@ except NameError:
  76. from sets import Set as set
  77.  
  78.  
  79. -class WhooshMockSearchIndex(indexes.SearchIndex):
  80. +class WhooshMockSearchIndex(indexes.SearchIndex, indexes.SignalOnChange):
  81. text = indexes.CharField(document=True, use_template=True)
  82. name = indexes.CharField(model_attr='author')
  83. pub_date = indexes.DateField(model_attr='pub_date')
  84.  
  85.  
  86. -class AllTypesWhooshMockSearchIndex(indexes.SearchIndex):
  87. +class AllTypesWhooshMockSearchIndex(indexes.SearchIndex, indexes.SignalOnChange):
  88. text = indexes.CharField(document=True, use_template=True)
  89. name = indexes.CharField(model_attr='author', indexed=False)
  90. pub_date = indexes.DateField(model_attr='pub_date')
  91. @@ -32,7 +32,7 @@ class AllTypesWhooshMockSearchIndex(indexes.SearchIndex):
  92. seen_count = indexes.IntegerField(indexed=False)
  93.  
  94.  
  95. -class WhooshMaintainTypeMockSearchIndex(indexes.SearchIndex):
  96. +class WhooshMaintainTypeMockSearchIndex(indexes.SearchIndex, indexes.SignalOnChange):
  97. text = indexes.CharField(document=True, use_template=True)
  98. month = indexes.CharField(indexed=False)
  99. pub_date = indexes.DateField(model_attr='pub_date')
Add Comment
Please, Sign In to add comment