Quellcode durchsuchen

HUE-3228 [dashboard] Avoid redirecting to no collection page if SQL default db is empty

Could be smarter in the future by picking up the default DB from the left assist.
Romain Rigaux vor 8 Jahren
Ursprung
Commit
a07f168

+ 6 - 2
desktop/libs/dashboard/src/dashboard/views.py

@@ -18,10 +18,10 @@
 import json
 import logging
 
+from django.core.urlresolvers import reverse
 from django.utils.html import escape
 from django.utils.translation import ugettext as _
 
-from django.core.urlresolvers import reverse
 from desktop.conf import USE_NEW_EDITOR
 from desktop.lib.django_util import JsonResponse, render
 from desktop.lib.exceptions_renderable import PopupException
@@ -29,6 +29,7 @@ from desktop.models import Document2, Document
 from desktop.views import antixss
 
 from search.conf import LATEST
+from indexer.views import importer
 
 from dashboard.dashboard_api import get_engine
 from dashboard.decorators import allow_owner_only
@@ -117,7 +118,10 @@ def new_search(request):
   engine = request.GET.get('engine', 'solr')
   collections = get_engine(request.user, engine).datasets()
   if not collections:
-    return no_collections(request)
+    if engine == 'solr':
+      return no_collections(request)
+    else:
+      return importer(request)
 
   collection = Collection2(user=request.user, name=collections[0], engine=engine)
   query = {'qs': [{'q': ''}], 'fqs': [], 'start': 0}

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

@@ -153,7 +153,10 @@ class SQLDashboardApi(DashboardApi):
 
   def datasets(self, show_all=False):
     snippet = {'type': self.engine}
-    return [table['name'] for table in get_api(MockRequest(self.user), snippet).autocomplete(snippet, database='default')['tables_meta']]
+    # Ideally from left assist at some point instead
+    databases = get_api(MockRequest(self.user), snippet).autocomplete(snippet)['databases']
+    database = databases and 'default' not in databases and databases[0] or 'default'
+    return [table['name'] for table in get_api(MockRequest(self.user), snippet).autocomplete(snippet, database=database)['tables_meta']]
 
 
   def fields(self, dashboard):