Przeglądaj źródła

HUE-3228 [dashboard] Support opening other databases than the fist one

Romain 6 lat temu
rodzic
commit
d522467fa4

+ 1 - 1
apps/search/src/search/dashboard_api.py

@@ -41,7 +41,7 @@ class SearchApi(DashboardApi):
     response = self.api.query(collection, query)
     return augment_solr_response(response, collection, query)
 
-  def datasets(self, show_all=False): # True if non Solr Cloud
+  def datasets(self, show_all=False, database=None): # True if non Solr Cloud
     client = SolrClient(user=self.user)
     show_all = show_all or not client.is_solr_cloud_mode()
     return [index['name'] for index in client.get_indexes(include_cores=show_all)]

+ 1 - 1
desktop/libs/dashboard/src/dashboard/dashboard_api.py

@@ -53,7 +53,7 @@ class DashboardApi(object):
     self.user = user
     self.cluster = cluster
 
-  def datasets(self, show_all=False): pass
+  def datasets(self, show_all=False, database=None): pass
 
   def query(self, collection, query, facet=None): pass
 

+ 3 - 1
desktop/libs/dashboard/src/dashboard/views.py

@@ -192,7 +192,9 @@ def browse(request, name, is_mobile=False):
   if engine == 'solr':
     name = re.sub('^default\.', '', name)
 
-  collections = get_engine(request.user, engine, source=source).datasets()
+  database = name.split('.', 1)[0]
+  collections = get_engine(request.user, engine, source=source).datasets(database=database)
+
   if not collections and engine == 'solr':
     return no_collections(request)
 

+ 4 - 3
desktop/libs/notebook/src/notebook/dashboard_api.py

@@ -225,12 +225,13 @@ class SQLDashboardApi(DashboardApi):
 
 
   # This method currently behaves more like a static method
-  def datasets(self, show_all=False):
+  def datasets(self, show_all=False, database=None):
     snippet = {'type': self.engine}
 
     # Ideally from left assist at some point instead
-    databases = get_api(MockRequest(self.user, self.cluster), snippet).autocomplete(snippet)['databases']
-    database = databases and 'default' not in databases and sorted(databases)[0] or 'default'
+    if database is None:
+      databases = get_api(MockRequest(self.user, self.cluster), snippet).autocomplete(snippet)['databases']
+      database = databases and 'default' not in databases and sorted(databases)[0] or 'default'
 
     return [
       database + '.' + table['name']