Beispiel #1
0
 def get_admin_commands(self):
     yield ('bhsearch rebuild', '',
         'Rebuild Bloodhound Search index',
         None, BloodhoundSearchApi(self.env).rebuild_index)
     yield ('bhsearch optimize', '',
         'Optimize Bloodhound search index',
         None, BloodhoundSearchApi(self.env).optimize)
 def setUp(self):
     super(ChangesetIndexerEventsTestCase, self).setUp()
     self.whoosh_backend = WhooshBackend(self.env)
     self.whoosh_backend.recreate_index()
     self.search_api = BloodhoundSearchApi(self.env)
     self.repository_manager = RepositoryManager(self.env)
     self.inject_dummy_repository()
Beispiel #3
0
 def setUp(self):
     super(TicketIndexerTestCase, self).setUp()
     self.whoosh_backend = WhooshBackend(self.env)
     self.whoosh_backend.recreate_index()
     self.ticket_indexer = TicketIndexer(self.env)
     self.search_api = BloodhoundSearchApi(self.env)
     self.env.config.set('bhsearch', 'silence_on_error', "False")
Beispiel #4
0
 def setUp(self):
     super(WikiIndexerEventsTestCase, self).setUp()
     self.wiki_system = WikiSystem(self.env)
     self.whoosh_backend = WhooshBackend(self.env)
     self.whoosh_backend.recreate_index()
     self.search_api = BloodhoundSearchApi(self.env)
     self.wiki_participant = WikiSearchParticipant(self.env)
     self.query_parser = DefaultQueryParser(self.env)
Beispiel #5
0
 def _index_changeset(self, changeset):
     try:
         doc = self.build_doc(changeset)
         search_api = BloodhoundSearchApi(self.env)
         search_api.add_doc(doc)
     except Exception, e:
         if self.silence_on_error:
             self.log.error(
                 "Error occurs during changeset indexing. \
                 The error will not be propagated. Exception: %s", e)
         else:
             raise
Beispiel #6
0
 def _ticket_deleted(self, ticket):
     """Called when a ticket is deleted."""
     try:
         search_api = BloodhoundSearchApi(self.env)
         search_api.delete_doc(ticket.product, TICKET_TYPE, ticket.id)
     except Exception, e:
         if self.silence_on_error:
             self.log.error(
                 "Error occurs during deleting ticket. \
                 The error will not be propagated. Exception: %s", e)
         else:
             raise
Beispiel #7
0
 def wiki_page_deleted(self, page):
     """Called when a ticket is deleted."""
     try:
         search_api = BloodhoundSearchApi(self.env)
         search_api.delete_doc(
             get_product(self.env).prefix, WIKI_TYPE, page.name)
     except Exception, e:
         if self.silence_on_error.lower() == "true":
             self.log.error(
                 "Error occurs during wiki indexing. \
                 The error will not be propagated. Exception: %s", e)
         else:
             raise
Beispiel #8
0
 def resource_deleted(self, resource, context):
     # pylint: disable=unused-argument
     try:
         search_api = BloodhoundSearchApi(self.env)
         search_api.delete_doc(
             get_product(self.env).prefix, MILESTONE_TYPE, resource.name)
     except Exception, e:
         if self.silence_on_error:
             self.log.error(
                 "Error occurs during milestone indexing. \
                 The error will not be propagated. Exception: %s", e)
         else:
             raise
Beispiel #9
0
 def _index_ticket(self, ticket, search_api=None, operation_context=None):
     try:
         if not search_api:
             search_api = BloodhoundSearchApi(self.env)
         doc = self.build_doc(ticket)
         search_api.add_doc(doc, operation_context)
     except Exception, e:
         if self.silence_on_error:
             self.log.error(
                 "Error occurs during ticket indexing. \
                 The error will not be propagated. Exception: %s", e)
         else:
             raise
Beispiel #10
0
 def wiki_page_renamed(self, page, old_name):
     """Called when a page has been renamed."""
     try:
         doc = self.build_doc(page)
         search_api = BloodhoundSearchApi(self.env)
         search_api.change_doc_id(doc, old_name)
     except Exception, e:
         if self.silence_on_error:
             self.log.error(
                 "Error occurs during renaming wiki from %s \
                 to %s. The error will not be propagated. Exception: %s",
                 old_name, page.name, e)
         else:
             raise
Beispiel #11
0
 def _index_wiki(self, page):
     try:
         doc = self.build_doc(page)
         search_api = BloodhoundSearchApi(self.env)
         search_api.add_doc(doc)
     except Exception, e:
         page_name = None
         if page is not None:
             page_name = page.name
         if self.silence_on_error:
             self.log.error(
                 "Error occurs during wiki indexing: %s. \
                 The error will not be propagated. Exception: %s",
                 page_name, e)
         else:
             raise
Beispiel #12
0
 def _rename_milestone(self, milestone, old_name):
     try:
         doc = self.build_doc(milestone)
         search_api = BloodhoundSearchApi(self.env)
         with search_api.start_operation() as operation_context:
             search_api.change_doc_id(doc, old_name, operation_context)
             TicketIndexer(self.env).reindex_tickets(
                 search_api, operation_context, milestone=milestone.name)
     except Exception, e:
         if self.silence_on_error:
             self.log.error(
                 "Error occurs during renaming milestone from \
              %s to %s. The error will not be propagated. Exception: %s",
                 old_name, milestone.name, e)
         else:
             raise
Beispiel #13
0
    def setUp(self, enabled=[]):
        super(SecurityTest, self).setUp(
            enabled=enabled +
            ['trac.*', 'trac.wiki.*', 'bhsearch.*', 'multiproduct.*'],
            create_req=True,
            enable_security=True,
        )
        self.env.parent = None
        self.product_envs = []
        self.req.perm = PermissionCache(self.env, 'x')

        self._setup_multiproduct()
        self._disable_trac_caches()
        self._create_whoosh_index()

        self.search_api = BloodhoundSearchApi(self.env)
        self._add_products('p1', 'p2')
Beispiel #14
0
 def _component_changed(self, component, old_values):
     if "name" in old_values:
         old_name = old_values["name"]
         try:
             search_api = BloodhoundSearchApi(self.env)
             with search_api.start_operation() as operation_context:
                 TicketIndexer(self.env).reindex_tickets(
                     search_api,
                     operation_context,
                     component=component.name)
         except Exception, e:
             if self.silence_on_error:
                 self.log.error(
                     "Error occurs during renaming Component \
                 from %s to %s. The error will not be propagated. \
                 Exception: %s", old_name, component.name, e)
             else:
                 raise
Beispiel #15
0
    def process_request(self, req):
        req.perm.assert_permission(SEARCH_PERMISSION)

        if self._is_opensearch_request(req):
            return ('opensearch.xml', {},
                    'application/opensearchdescription+xml')

        request_context = RequestContext(
            self.env,
            req,
            self.search_participants,
            self.default_view,
            self.all_grid_fields,
            self.default_facets,
            self.global_quicksearch,
            self.query_suggestions_enabled,
        )

        if request_context.requires_redirect:
            req.redirect(request_context.parameters.create_href(), True)

        # compatibility with legacy search
        req.search_query = request_context.parameters.query

        query_result = BloodhoundSearchApi(self.env).query(
            request_context.parameters.query,
            pagenum=request_context.page,
            pagelen=request_context.pagelen,
            sort=request_context.sort,
            fields=request_context.fields,
            facets=request_context.facets,
            filter=request_context.query_filter,
            highlight=True,
            context=request_context,
        )

        request_context.process_results(query_result)
        return self._return_data(req, request_context.data)
Beispiel #16
0
 def setUp(self):
     BaseRelationsTestCase.setUp(self, enabled=['bhsearch.*'])
     self.global_env.path = tempfile.mkdtemp('bhrelations-tempenv')
     self.search_api = BloodhoundSearchApi(self.env)
     self.search_api.upgrade_environment(self.env.db_transaction)
Beispiel #17
0
 def setUp(self):
     super(ApiQueryWithWhooshTestCase, self).setUp(create_req=True)
     WhooshBackend(self.env).recreate_index()
     self.search_api = BloodhoundSearchApi(self.env)
     self.ticket_participant = TicketSearchParticipant(self.env)
     self.query_parser = DefaultQueryParser(self.env)
Beispiel #18
0
    def setUp(self):
        super(QuerySuggestionTestCase, self).setUp(create_req=True)
        self.whoosh_backend = WhooshBackend(self.env)
        self.whoosh_backend.recreate_index()

        self.search_api = BloodhoundSearchApi(self.env)
 def setUp(self):
     super(MilestoneIndexerEventsTestCase, self).setUp()
     self.whoosh_backend = WhooshBackend(self.env)
     self.whoosh_backend.recreate_index()
     self.search_api = BloodhoundSearchApi(self.env)