فهرست منبع

HUE-8530 [organization] Limit dump_config to desktop section

Next:
- add connectors
- add 2nd level from [desktop] as Toc?
Romain 6 سال پیش
والد
کامیت
21672d4bd1
2فایلهای تغییر یافته به همراه27 افزوده شده و 11 حذف شده
  1. 9 2
      desktop/core/src/desktop/tests.py
  2. 18 9
      desktop/core/src/desktop/views.py

+ 9 - 2
desktop/core/src/desktop/tests.py

@@ -219,12 +219,11 @@ def test_dump_config():
     response1 = c.get(reverse('desktop.views.dump_config'))
     assert_true(CANARY in response1.content, response1.content)
 
-    response2 = c.get(reverse('desktop.views.dump_config'), dict(private="true"))
+    response2 = c.get(reverse('desktop.views.dump_config'), {'private': 'true'})
     assert_true(CANARY in response2.content)
 
     # There are more private variables...
     assert_true(len(response1.content) < len(response2.content))
-
   finally:
     clear()
 
@@ -278,6 +277,14 @@ def test_dump_config():
       os.environ["HUE_CONF_DIR"] = prev_env_conf
 
 
+  finish = desktop.conf.ENABLE_CONNECTORS.set_for_testing(True)
+  try:
+    response = c.get(reverse('desktop.views.dump_config'))
+    assert_equal(1, len(response.context[0]['apps']), response.context[0])
+  finally:
+    finish()
+
+
 def hue_version():
   global HUE_VERSION
   HUE_VERSION_BAK = HUE_VERSION

+ 18 - 9
desktop/core/src/desktop/views.py

@@ -50,7 +50,7 @@ import desktop.log.log_buffer
 from desktop import appmanager
 from desktop.api import massaged_tags_for_json, massaged_documents_for_json, _get_docs
 from desktop.auth.backend import is_admin
-from desktop.conf import USE_NEW_EDITOR, HUE_LOAD_BALANCER, get_clusters
+from desktop.conf import USE_NEW_EDITOR, HUE_LOAD_BALANCER, get_clusters, ENABLE_CONNECTORS
 from desktop.lib import django_mako, fsmanager
 from desktop.lib.conf import GLOBAL_CONFIG, BoundConfig, _configs_from_dir
 from desktop.lib.config_spec_dump import ConfigSpec
@@ -284,8 +284,8 @@ def status_bar(request):
       LOG.exception("Failed to execute status_bar view %s" % (view,))
   return HttpResponse(resp)
 
+
 def dump_config(request):
-  # Note that this requires login (as do most apps).
   show_private = False
   conf_dir = os.path.realpath(os.getenv("HUE_CONF_DIR", get_desktop_root("conf")))
 
@@ -295,16 +295,25 @@ def dump_config(request):
   if request.GET.get("private"):
     show_private = True
 
-  apps = sorted(appmanager.DESKTOP_MODULES, key=lambda app: app.name)
+  app_modules = appmanager.DESKTOP_MODULES
+  config_modules = GLOBAL_CONFIG.get().values()
+  if ENABLE_CONNECTORS.get():
+    app_modules = [app_module for app_module in app_modules if app_module.name == 'desktop']
+    config_modules = [config_module for config_module in config_modules if config_module.config.key == 'desktop']
+
+  apps = sorted(app_modules, key=lambda app: app.name)
   apps_names = [app.name for app in apps]
   top_level = sorted(list(GLOBAL_CONFIG.get().values()), key=lambda obj: apps_names.index(obj.config.key))
 
-  return render("dump_config.mako", request, dict(
-    show_private=show_private,
-    top_level=top_level,
-    conf_dir=conf_dir,
-    is_embeddable=request.GET.get('is_embeddable', False),
-    apps=apps))
+  return render("dump_config.mako", request, {
+      'show_private': show_private,
+      'top_level': top_level,
+      'conf_dir': conf_dir,
+      'is_embeddable': request.GET.get('is_embeddable', False),
+      'apps': apps
+    }
+  )
+
 
 @access_log_level(logging.WARN)
 def threads(request):