From 2f6f740610330b9541341ac5f4867c75639576ba Mon Sep 17 00:00:00 2001
From: clime <clime@redhat.com>
Date: Tue, 19 Jul 2016 14:26:52 +0200
Subject: [PATCH] auto_update class attribute added for AbstractWhoosheer
Decides if a whoosheer should be updated by whooshee.on_commit method.
---
flask_whooshee.py | 4 ++++
test.py | 17 +++++++++++++++++
3 files changed, 39 insertions(+)
diff --git a/flask_whooshee.py b/flask_whooshee.py
index 9367d21..b0d2bfb 100644
--- a/flask_whooshee.py
+++ b/flask_whooshee.py
@@ -128,6 +128,8 @@ class AbstractWhoosheer(object):
searched.
"""
+ auto_update = True
+
@classmethod
def search(cls, search_string, values_of='', group=whoosh.qparser.OrGroup, match_substrings=True, limit=None):
"""Searches the fields for given search_string.
@@ -395,6 +397,8 @@ def on_commit(self, changes):
to do the actual index writing.
"""
for wh in self.whoosheers:
+ if not wh.auto_update:
+ continue
writer = None
for change in changes:
if change[0].__class__ in wh.models:
diff --git a/test.py b/test.py
index 65ea79c..103866f 100644
--- a/test.py
+++ b/test.py
@@ -117,6 +117,23 @@ def test_nothing_found(self):
found = self.Entry.query.whooshee_search('not there!').all()
self.assertEqual(len(found), 0)
+ def test_no_autoupdate(self):
+ for whoosheer in self.wh.whoosheers:
+ whoosheer.auto_update = False
+ self.db.session.add(self.u1)
+ self.db.session.commit()
+
+ found = self.Entry.query.whooshee_search('chuck').all()
+ self.assertEqual(len(found), 0) # nothing is found
+
+ for whoosheer in self.wh.whoosheers:
+ whoosheer.auto_update = True
+ self.db.session.add(self.u2)
+ self.db.session.commit()
+
+ found = self.Entry.query.whooshee_search('arnold').all()
+ self.assertEqual(len(found), 1) # arnold is found
+
def test_mw_result_in_different_fields(self):
self.db.session.add_all(self.all_inst)
self.db.session.commit()