Exemple #1
0
    def get_queryset(self, use_haystack=USE_HAYSTACK):
        """Return the base queryset for this form."""
        if use_haystack:
            qs = SmartSearchQuerySet().models(Video)
        else:
            qs = Video.objects.filter(status=Video.ACTIVE)

        return qs.filter(site=settings.SITE_ID)
Exemple #2
0
    def assertQueryResults(self, query, expected):
        """
        Given a query and a list of videos, checks that all expected videos
        are found by a search with the given query.

        """
        results = SmartSearchQuerySet().auto_query(query)
        results = dict((unicode(r.pk), r.object.name) for r in results if r.object is not None)
        expected = dict((unicode(v.pk), v.name) for v in expected)

        result_pks = set(results.items())
        expected_pks = set(expected.items())
        self.assertEqual(result_pks, expected_pks)
Exemple #3
0
    def assertQueryResults(self, query, expected):
        """
        Given a query and a list of videos, checks that all expected videos
        are found by a search with the given query.

        """
        results = SmartSearchQuerySet().auto_query(query)
        results = dict((unicode(r.pk), r.object.name) for r in results)
        expected = dict((unicode(v.pk), v.name) for v in expected)

        result_pks = set(results.items())
        expected_pks = set(expected.items())
        self.assertEqual(result_pks, expected_pks)
Exemple #4
0
 def test_search_description_with_html(self):
     """
     If the description contains HTML, searching should still find words
     next to HTML tags.
     """
     results = SmartSearchQuerySet().auto_query('blahblah')
     self.assertTrue(results)
Exemple #5
0
 def test_search_exclude_terms(self):
     """
     Search should exclude terms that start with - (hyphen).
     """
     results = SmartSearchQuerySet().auto_query('-blender')
     self.assertTrue(results)
     for result in results:
         self.assertFalse('blender' in result.text.lower())
Exemple #6
0
 def test_search_phrase(self):
     """
     Phrases in quotes should be searched for as a phrase.
     """
     results = SmartSearchQuerySet().auto_query('"empty mapping"')
     self.assertTrue(results)
     for result in results:
         self.assertTrue('empty mapping' in result.text.lower())
Exemple #7
0
 def test_search(self):
     """
     The basic query should return videos which contain the search term.
     """
     results = SmartSearchQuerySet().auto_query('blender')
     self.assertTrue(results)
     for result in results:
         self.assertTrue('blender' in result.text.lower(), result.text)
Exemple #8
0
 def test_search_or(self):
     """
     Terms bracketed in {}s should be ORed together.
     """
     results = SmartSearchQuerySet().auto_query('{elephant render}')
     self.assertTrue(results)
     for result in results:
         self.assertTrue(('elephant' in result.text.lower())
                         or ('render' in result.text.lower()), result.text)
Exemple #9
0
 def test_search_or_and(self):
     """
     Mixing OR and AND should work as expected.
     """
     # this used to be '{import repair} -and' but that no longer works.  I
     # wonder if recent versions of Haystack (or Whoosh) skip small words?
     results = SmartSearchQuerySet().auto_query(
         '{import repair} -positioning')
     self.assertTrue(results)
     for result in results:
         self.assertFalse('positioning' in result.text.lower(), result.text)
         self.assertTrue(('import' in result.text.lower())
                         or ('repair' in result.text.lower()), result.text)
Exemple #10
0
 def assertTokenizes(self, query, result):
     self.assertEqual(tuple(SmartSearchQuerySet().tokenize(query)),
                      tuple(result))
Exemple #11
0
 def search(self, query):
     return [
         result.object for result in SmartSearchQuerySet().auto_query(query)
     ]
Exemple #12
0
 def __init__(self, *args, **kwargs):
     sqs = kwargs.get('searchqueryset', None)
     if sqs is None:
         kwargs['searchqueryset'] = SmartSearchQuerySet()
     super(SmartSearchForm, self).__init__(*args, **kwargs)