Quellcode durchsuchen

HUE-8993 [importer] Do not propose file import when there is no fs

Romain vor 5 Jahren
Ursprung
Commit
8ab0e5f863

+ 2 - 0
desktop/libs/indexer/src/indexer/templates/importer.mako

@@ -1705,7 +1705,9 @@ ${ commonheader(_("Importer"), "indexer", user, request, "60px") | n,unicode }
         }
       });
       self.inputFormatsAll = ko.observableArray([
+          % if request.fs:
           {'value': 'file', 'name': 'File'},
+          % endif
           % if ENABLE_SQOOP.get():
           {'value': 'rdbms', 'name': 'External Database'},
           % endif

+ 1 - 0
desktop/libs/indexer/src/indexer/test_utils.py

@@ -31,6 +31,7 @@ if sys.version_info[0] > 2:
 else:
   from StringIO import StringIO as string_io
 
+
 def test_get_ensemble():
   # Non ascii
   data = string_io('fieldA\nrel=""nofollow"">Twitter for Péché')

+ 25 - 1
desktop/libs/indexer/src/indexer/tests.py

@@ -17,6 +17,7 @@
 
 from builtins import object
 import json
+import sys
 
 from nose.plugins.skip import SkipTest
 from nose.tools import assert_equal, assert_true, assert_false
@@ -33,10 +34,15 @@ from useradmin.models import User
 from desktop.lib.django_test_util import make_logged_in_client
 from desktop.lib.test_utils import add_to_group, grant_access
 
+if sys.version_info[0] > 2:
+  from unittest.mock import patch, Mock
+else:
+  from mock import patch, Mock
 
-def test_get_ensemble():
 
+def test_get_ensemble():
   clears = []
+
   clears.append(libzookeeper_conf.ENSEMBLE.set_for_testing('zoo:2181'))
   clears.append(libsolr_conf.SOLR_ZK_PATH.set_for_testing('/solr'))
   try:
@@ -55,6 +61,24 @@ def test_get_ensemble():
       clear()
 
 
+class TestImporter(object):
+
+  def setUp(self):
+    self.client = make_logged_in_client()
+
+  def test_input_formats_no_fs(self):
+    with patch('desktop.middleware.fsmanager.get_filesystem') as get_filesystem:
+      get_filesystem.return_value = Mock()
+
+      resp = self.client.get(reverse('indexer:importer'))
+      assert_true(b"{'value': 'file', 'name': 'File'}" in resp.content)
+
+      get_filesystem.return_value = None
+
+      resp = self.client.get(reverse('indexer:importer'))
+      assert_false(b"{'value': 'file', 'name': 'File'}" in resp.content)
+
+
 class TestIndexerWithSolr(object):
 
   @classmethod

+ 5 - 1
desktop/libs/indexer/src/indexer/urls.py

@@ -28,7 +28,11 @@ urlpatterns = [
   url(r'^install_examples$', indexer_views.install_examples, name='install_examples'),
 
   url(r'^importer/?$', indexer_views.importer, name='importer'),
-  url(r'^importer/prefill/(?P<source_type>[^/]+)/(?P<target_type>[^/]+)/(?P<target_path>[^/]+)?$', indexer_views.importer_prefill, name='importer_prefill'),
+  url(
+    r'^importer/prefill/(?P<source_type>[^/]+)/(?P<target_type>[^/]+)/(?P<target_path>[^/]+)?$',
+    indexer_views.importer_prefill,
+    name='importer_prefill'
+  ),
 ]
 
 if ENABLE_NEW_INDEXER.get():

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

@@ -110,7 +110,9 @@ def importer_prefill(request, source_type, target_type, target_path=None):
 
 
 def _importer(request, prefill):
-  source_type = request.GET.get('sourceType') or get_cluster_config(request.user)['default_sql_interpreter']
+  cluster_config = get_cluster_config(request.user)
+
+  source_type = request.GET.get('sourceType') or cluster_config['default_sql_interpreter']
 
   return render('importer.mako', request, {
       'is_embeddable': request.GET.get('is_embeddable', False),