def test_get_admin_results_superuser(self): with self._whoosh_settings(): with patch('haystack.backend', haystack.load_backend(HAYSTACK_SEARCH_ENGINE_TEST)): testsuperuser = UserBuilder('testsuperuser', is_superuser=True).user # We should match all subjects, periods, assignments and groups - we are superuser rootnodebuilder = NodeBuilder('rootnode', 'Test Roonode') node1builder = rootnodebuilder\ .add_childnode('node1', 'Test Node One').add_admins(self.testuser) subject1builder = node1builder.add_subject('subject1', 'Test Subject One') period1builder = subject1builder.add_6month_active_period( short_name='period1', long_name='Test Period One') assignment1builder = period1builder.add_assignment('test1', long_name="Test Assignment One") group1builder = assignment1builder.add_group() self._rebuild_searchindex() results = SearchHelper(testsuperuser, 'Test').get_admin_results() self.assertEquals(set(map(lambda r: r.object, results)), set([ rootnodebuilder.node, node1builder.node, subject1builder.subject, period1builder.period, assignment1builder.assignment, group1builder.group, ]))
def test_load_nonexistent(self): try: backend = haystack.load_backend('foobar') self.fail() except ImproperlyConfigured, e: self.assertEqual( str(e), "'foobar' isn't an available search backend. Available options are: 'dummy', 'simple', 'solr', 'whoosh'" )
def test_load_solr(self): try: import pysolr except ImportError: warnings.warn("Pysolr doesn't appear to be installed. Unable to test loading the Solr backend.") return backend = haystack.load_backend('solr') self.assertEqual(backend.BACKEND_NAME, 'solr')
def test_load_whoosh(self): try: import whoosh except ImportError: warnings.warn("Whoosh doesn't appear to be installed. Unable to test loading the Whoosh backend.") return backend = haystack.load_backend('whoosh') self.assertEqual(backend.BACKEND_NAME, 'whoosh')
def test_load_whoosh(self): try: import whoosh except ImportError: warnings.warn( "Whoosh doesn't appear to be installed. Unable to test loading the Whoosh backend." ) return backend = haystack.load_backend('whoosh') self.assertEqual(backend.BACKEND_NAME, 'whoosh')
def test_load_solr(self): try: import pysolr except ImportError: warnings.warn( "Pysolr doesn't appear to be installed. Unable to test loading the Solr backend." ) return backend = haystack.load_backend('solr') self.assertEqual(backend.BACKEND_NAME, 'solr')
def test_get_student_results(self): backend = haystack.load_backend(HAYSTACK_SEARCH_ENGINE_TEST) with self._whoosh_settings(): with patch('haystack.backend', backend): periodbuilder = PeriodBuilder.quickadd_ducku_duck1010_active() group1 = periodbuilder.add_assignment('assignment1', long_name="Assignment One")\ .add_group().add_students(self.testuser).group group2 = periodbuilder.add_assignment('assignment2', long_name="Assignment Two")\ .add_group().add_students(self.testuser).group group_not_student = periodbuilder.add_assignment('assignment3', long_name="Assignment Three")\ .add_group().add_students(UserBuilder('nobody').user).group self._rebuild_searchindex() results = SearchHelper(self.testuser, 'Assignment').get_student_results() self.assertEquals(results.count(), 2) self.assertEquals(set(map(lambda r: r.object, results)), set([group1, group2]))
def test_get_examiner_results(self): with self._whoosh_settings(): with patch('haystack.backend', haystack.load_backend(HAYSTACK_SEARCH_ENGINE_TEST)): periodbuilder = PeriodBuilder.quickadd_ducku_duck1010_active() assignment1builder = periodbuilder.add_assignment('assignment1', long_name="Assignment One") assignment2builder = periodbuilder.add_assignment('assignment2', long_name="Assignment Two") group1 = assignment1builder.add_group().add_examiners(self.testuser).group group2 = assignment1builder.add_group().add_examiners(self.testuser).group group3 = assignment2builder.add_group().add_examiners(self.testuser).group assignment2builder.add_group().add_examiners(UserBuilder('nobody').user) # Should not math self._rebuild_searchindex() results = SearchHelper(self.testuser, 'Assignment').get_examiner_results() self.assertEquals(results.count(), 5) self.assertEquals(set(map(lambda r: r.object, results)), set([group1, group2, group3, assignment1builder.assignment, assignment2builder.assignment]))
def tmp_result(request): context = {} simple_backend = haystack.load_backend('simple') query = request.GET.get('q', '') results = SearchQuerySet().auto_query(query) paginator = Paginator(results, 20) # Show 25 contacts per page page = request.GET.get('page') try: products = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. products = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. products = paginator.page(paginator.num_pages) context['query'] = query context['page'] = products return render(request, 'search.html', context)
def test_get_admin_results(self): with self._whoosh_settings(): with patch('haystack.backend', haystack.load_backend(HAYSTACK_SEARCH_ENGINE_TEST)): rootnodebuilder = NodeBuilder('rootnode', 'Test Roonode') # We should match all subjects, periods, assignments and groups in node1 - we are admin on the node node1builder = rootnodebuilder\ .add_childnode('node1', 'Test Node One').add_admins(self.testuser) subject1builder = node1builder.add_subject('subject1', 'Test Subject One') period1builder = subject1builder.add_6month_active_period( short_name='period1', long_name='Test Period One') assignment1builder = period1builder.add_assignment('test1', long_name="Test Assignment One") group1builder = assignment1builder.add_group() # We should only match the assignment and the group in node2 - we are only admin on assignment1 node2builder = rootnodebuilder\ .add_childnode('node2', 'Test Node Two') assignment2builder = node2builder\ .add_subject('subject2', 'Test Subject Two')\ .add_6month_active_period( short_name='period2', long_name='Test Period Two')\ .add_assignment('test2', long_name="Test Assignment One")\ .add_admins(self.testuser) group2builder = assignment2builder.add_group() self._rebuild_searchindex() results = SearchHelper(self.testuser, 'Test').get_admin_results() self.assertEquals(set(map(lambda r: r.object, results)), set([ node1builder.node, subject1builder.subject, period1builder.period, assignment1builder.assignment, group1builder.group, assignment2builder.assignment, group2builder.group, ]))
def test_load_simple(self): backend = haystack.load_backend('simple') self.assertEqual(backend.BACKEND_NAME, 'simple')
def test_load_dummy(self): backend = haystack.load_backend('dummy') self.assertEqual(backend.BACKEND_NAME, 'dummy')
def test_load_nonexistent(self): try: backend = haystack.load_backend('foobar') self.fail() except ImproperlyConfigured, e: self.assertEqual(str(e), "'foobar' isn't an available search backend. Available options are: 'dummy', 'simple', 'solr', 'whoosh'")
:copyright: (c) 2010 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. """ import haystack from haystack.indexes import * from haystack.sites import SearchSite from sentry.conf import settings from sentry.utils import to_unicode from sentry.models import GroupedMessage if settings.SEARCH_ENGINE: # Ensure we stop here if we havent configure Sentry to work under haystack backend = haystack.load_backend(settings.SEARCH_ENGINE) class SentrySearchSite(SearchSite): pass site = SentrySearchSite() site.backend = backend.SearchBackend(site, **settings.SEARCH_OPTIONS) class GroupedMessageIndex(RealTimeSearchIndex): text = CharField(document=True, stored=False) status = IntegerField(model_attr='status', stored=False, null=True) level = IntegerField(model_attr='level', stored=False, null=True) logger = CharField(model_attr='logger', stored=False, null=True) server = MultiValueField(stored=False, null=True) url = MultiValueField(stored=False, null=True) site = MultiValueField(stored=False, null=True)
import haystack from haystack.indexes import * from haystack.sites import SearchSite from sentry.conf import settings from sentry.utils import to_unicode from sentry.models import GroupedMessage if settings.SEARCH_ENGINE: # Ensure we stop here if we havent configure Sentry to work under haystack backend = haystack.load_backend(settings.SEARCH_ENGINE) class SentrySearchSite(SearchSite): pass site = SentrySearchSite() site.backend = backend.SearchBackend(site, **settings.SEARCH_OPTIONS) class GroupedMessageIndex(RealTimeSearchIndex): text = CharField(document=True, stored=False) status = IntegerField(model_attr='status', stored=False, null=True) level = IntegerField(model_attr='level', stored=False, null=True) logger = CharField(model_attr='logger', stored=False, null=True) server = MultiValueField(stored=False, null=True) url = MultiValueField(stored=False, null=True) site = MultiValueField(stored=False, null=True) first_seen = DateTimeField(model_attr='first_seen', stored=False) last_seen = DateTimeField(model_attr='last_seen', stored=False) # def get_queryset(self): # """Used when the entire index for model is updated."""
import haystack from haystack.indexes import * from haystack.sites import SearchSite from sentry import conf from sentry.helpers import to_unicode from sentry.models import GroupedMessage if conf.SEARCH_ENGINE: # Ensure we stop here if we havent configure Sentry to work under haystack backend = haystack.load_backend(conf.SEARCH_ENGINE) class SentrySearchSite(SearchSite): pass site = SentrySearchSite() site.backend = backend.SearchBackend(site, **conf.SEARCH_OPTIONS) class GroupedMessageIndex(RealTimeSearchIndex): text = CharField(document=True, stored=False) status = IntegerField(model_attr="status", stored=False, null=True) level = IntegerField(model_attr="level", stored=False, null=True) logger = CharField(model_attr="logger", stored=False, null=True) server = MultiValueField(stored=False, null=True) url = MultiValueField(stored=False, null=True) site = MultiValueField(stored=False, null=True) first_seen = DateTimeField(model_attr="first_seen", stored=False) last_seen = DateTimeField(model_attr="last_seen", stored=False) # def get_queryset(self):
import haystack from haystack.indexes import * from haystack.sites import SearchSite from sentry import conf from sentry.helpers import to_unicode from sentry.models import GroupedMessage if conf.SEARCH_ENGINE: # Ensure we stop here if we havent configure Sentry to work under haystack backend = haystack.load_backend(conf.SEARCH_ENGINE) class SentrySearchSite(SearchSite): pass site = SentrySearchSite() site.backend = backend.SearchBackend(site, **conf.SEARCH_OPTIONS) class GroupedMessageIndex(RealTimeSearchIndex): text = CharField(document=True, stored=False) status = IntegerField(model_attr='status', stored=False, null=True) level = IntegerField(model_attr='level', stored=False, null=True) logger = CharField(model_attr='logger', stored=False, null=True) server = MultiValueField(stored=False, null=True) url = MultiValueField(stored=False, null=True) site = MultiValueField(stored=False, null=True) first_seen = DateTimeField(model_attr='first_seen', stored=False) last_seen = DateTimeField(model_attr='last_seen', stored=False) # def get_queryset(self):
def load_whoosh(self): backend = haystack.load_backend('whoosh') self.assertEqual(backend.BACKEND_NAME, 'whoosh')
def load_solr(self): backend = haystack.load_backend('solr') self.assertEqual(backend.BACKEND_NAME, 'solr')
def load_nonexistent(self): try: backend = haystack.load_backend('foobar') self.fail() except ImproperlyConfigured: pass
def load_dummy(self): backend = haystack.load_backend('dummy') self.assertEqual(backend.BACKEND_NAME, 'dummy')