소스 검색

HUE-6844 [frontend] Make all custom apps embeddable

Enrico Berti 8 년 전
부모
커밋
f7f487f

+ 5 - 0
desktop/core/src/desktop/app_template/src/app_name/templates/index.mako

@@ -16,7 +16,10 @@
 ${'<'}%!from desktop.views import commonheader, commonfooter %>
 ${'<'}%namespace name="shared" file="shared_components.mako" />
 
+${'%'}if not is_embeddable:
 ${'$'}{commonheader("${" ".join(word.capitalize() for word in app_name.split("_"))}", "${app_name}", user, request) | n,unicode}
+${'%'}endif
+
 ${'$'}{shared.menubar(section='mytab')}
 
 ${'#'}# Use double hashes for a mako template comment
@@ -31,4 +34,6 @@ ${'#'}# Main body
     </div>
   </div>
 </div>
+${'%'}if not is_embeddable:
 ${'$'}{commonfooter(request, messages) | n,unicode}
+${'%'}endif

+ 4 - 1
desktop/core/src/desktop/app_template/src/app_name/views.py

@@ -19,4 +19,7 @@ from desktop.lib.django_util import render
 import datetime
 
 def index(request):
-  return render('index.mako', request, dict(date=datetime.datetime.now()))
+  return render('index.mako', request, {
+    'date': datetime.datetime.now(),
+    'is_embeddable': request.GET.get('is_embeddable', False),
+  })

+ 1 - 1
desktop/core/src/desktop/models.py

@@ -1824,7 +1824,7 @@ class ClusterConfig():
 
     for other in other_apps:
       interpreters.append({
-        'type': other.nice_name,
+        'type': other.display_name,
         'displayName': other.nice_name,
         'buttonName': other.nice_name,
         'tooltip': other.nice_name,

+ 21 - 1
desktop/core/src/desktop/templates/hue.mako

@@ -388,6 +388,11 @@ ${ hueIcons.symbols() }
       <div id="embeddable_500" class="embeddable"></div>
       <div id="embeddable_sqoop" class="embeddable"></div>
       <div id="embeddable_jobsub" class="embeddable"></div>
+      % if other_apps:
+        % for other in other_apps:
+          <div id="embeddable_${ other.display_name }" class="embeddable"></div>
+        % endfor
+      % endif
     </div>
 
     <div id="rightResizer" class="resizer" data-bind="visible: rightAssistVisible() && rightAssistAvailable(), splitFlexDraggable : {
@@ -597,6 +602,11 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
         dump_config: { url: '/desktop/dump_config', title: '${_('Dump Configuration')}' },
         sqoop: { url: '/sqoop', title: '${_('Sqoop')}' },
         jobsub: { url: '/jobsub/not_available', title: '${_('Job Designer')}' },
+        % if other_apps:
+          % for other in other_apps:
+            ${ other.display_name }: { url: '/${ other.display_name }', title: '${ other.nice_name }' },
+          % endfor
+        % endif
       };
 
       var SKIP_CACHE = [
@@ -604,7 +614,12 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
           'filebrowser', 'useradmin_users', 'useradmin_groups', 'useradmin_newgroup', 'useradmin_editgroup',
           'useradmin_permissions', 'useradmin_editpermission', 'useradmin_configurations', 'useradmin_newuser',
           'useradmin_addldapusers', 'useradmin_addldapgroups', 'useradmin_edituser', 'importer',
-          'security_hive', 'security_hdfs', 'security_hive2', 'security_solr', 'logs'
+          'security_hive', 'security_hdfs', 'security_hive2', 'security_solr', 'logs',
+          % if other_apps:
+            % for other in other_apps:
+              '${ other.display_name }',
+            % endfor
+          % endif
       ];
 
       var OnePageViewModel = function () {
@@ -1053,6 +1068,11 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
           { url: '/useradmin/users/new', app: 'useradmin_newuser' },
           { url: '/useradmin/users/', app: 'useradmin_users' },
           { url: '/useradmin', app: 'useradmin_users' },
+          % if other_apps:
+            % for other in other_apps:
+              { url: '/${ other.display_name }', app: '${ other.display_name }' },
+            % endfor
+          % endif
         ];
 
         pageMapping.forEach(function (mapping) {

+ 2 - 0
desktop/core/src/desktop/views.py

@@ -68,10 +68,12 @@ def is_alive(request):
 
 def hue(request):
   apps = appmanager.get_apps_dict(request.user)
+  current_app, other_apps, apps_list = _get_apps(request.user, '')
   default_cluster_index, default_cluster_interface = Cluster(request.user).get_list_interface_indexes()
 
   return render('hue.mako', request, {
     'apps': apps,
+    'other_apps': other_apps,
     'is_s3_enabled': is_s3_enabled() and has_s3_access(request.user),
     'is_ldap_setup': 'desktop.auth.backend.LdapBackend' in desktop.conf.AUTH.BACKEND.get(),
     'leaflet': {