ソースを参照

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 8 年 前
コミット
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):