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()
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")
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)
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
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
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
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
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
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
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
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
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')
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
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)
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)
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)
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)