self.assertTrue(WatsonTestModel1 in watson.get_registered_models()) self.assertTrue( isinstance(watson.get_adapter(WatsonTestModel1), watson.SearchAdapter)) # Unregister the model and text. watson.unregister(WatsonTestModel1) self.assertFalse(watson.is_registered(WatsonTestModel1)) self.assertRaises(RegistrationError, lambda: watson.unregister(WatsonTestModel1)) self.assertTrue(WatsonTestModel1 not in watson.get_registered_models()) self.assertRaises( RegistrationError, lambda: isinstance(watson.get_adapter(WatsonTestModel1))) complex_registration_search_engine = SearchEngine("restricted") class InstallUninstallTestBase(TestCase): def testUninstallAndInstall(self): # Not too much to test here, as some backends don't require installation. # Just make sure the commands don't error. call_command("uninstallwatson", verbosity=0) call_command("installwatson", verbosity=0) @skipUnless(get_backend().requires_installation, "search backend does not require installation") def testRealInstallAndUninstall(self): backend = get_backend() call_command("uninstallwatson", verbosity=0) self.assertFalse(backend.is_installed())
"""Admin integration for django-watson.""" from __future__ import unicode_literals from django.contrib import admin from django.contrib.admin.views.main import ChangeList from watson.registration import SearchEngine, SearchAdapter admin_search_engine = SearchEngine("admin") class WatsonSearchChangeList(ChangeList): """A change list that takes advantage of django-watson full text search.""" def get_query_set(self, *args, **kwargs): """Creates the query set.""" # Do the basic searching. search_fields = self.search_fields self.search_fields = () try: qs = super(WatsonSearchChangeList, self).get_query_set(*args, **kwargs) finally: self.search_fields = search_fields # Do the full text searching. if self.query.strip(): qs = self.model_admin.search_engine.filter(qs, self.query, ranking=False) return qs