소스 검색

HUE-6077 [frontend] Serve the http 500 file in case of a load app error

Enrico Berti 8 년 전
부모
커밋
21e0dbf76e

+ 5 - 2
desktop/core/src/desktop/templates/500.mako

@@ -20,8 +20,9 @@ from desktop.views import commonheader, commonfooter
 from django.utils.translation import ugettext as _
 %>
 
+%if not is_embeddable:
 ${ commonheader(_('500 - Server error'), "", user, request) | n,unicode }
-
+%endif
 
 <link rel="stylesheet" href="${ static('desktop/css/httperrors.css') }">
 
@@ -70,7 +71,7 @@ ${ commonheader(_('500 - Server error'), "", user, request) | n,unicode }
         </div>
       % else:
         % if user.is_superuser:
-          <a href="/logs" target="_blank" title="${ _('View server logs') }">${_('View logs')}</a>
+          <a href="/logs" ${ not is_embeddable and 'target="_blank"'  or '' } title="${ _('View server logs') }">${_('View logs')}</a>
         % endif
       % endif
 
@@ -84,4 +85,6 @@ ${ commonheader(_('500 - Server error'), "", user, request) | n,unicode }
   }
 </script>
 
+%if not is_embeddable:
 ${ commonfooter(request, messages) | n,unicode }
+%endif

+ 9 - 0
desktop/core/src/desktop/templates/hue.mako

@@ -355,6 +355,7 @@ ${ hueIcons.symbols() }
       <div id="embeddable_logs" class="embeddable"></div>
       <div id="embeddable_dump_config" class="embeddable"></div>
       <div id="embeddable_404" class="embeddable"></div>
+      <div id="embeddable_500" class="embeddable"></div>
       <div id="embeddable_sqoop" class="embeddable"></div>
     </div>
 
@@ -518,6 +519,7 @@ ${ assist.assistPanel() }
 
       var EMBEDDABLE_PAGE_URLS = {
         404: '/404',
+        500: '/500',
         editor: '/editor',
         notebook: '/notebook',
         metastore: '/metastore/tables/',
@@ -716,6 +718,9 @@ ${ assist.assistPanel() }
                 }
                 $('#embeddable_' + app).html(r);
                 self.isLoadingEmbeddable(false);
+              },
+              error: function () {
+                page('/500');
               }
             });
           } else {
@@ -925,6 +930,10 @@ ${ assist.assistPanel() }
           self.loadApp('sqoop');
         });
 
+        page('/500', function(ctx){
+          self.loadApp('500');
+        });
+
         page('/', function(ctx){
           page('/editor');
         });

+ 1 - 0
desktop/core/src/desktop/urls.py

@@ -96,6 +96,7 @@ dynamic_patterns += patterns('desktop.views',
   # Hue 4
   (r'^hue.*/$', 'hue'),
   (r'^404$', 'not_found'),
+  (r'^500$', 'server_error'),
 
   # KO components, change to doc?name=ko_editor or similar
   (r'^ko_editor', 'ko_editor'),

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

@@ -135,6 +135,11 @@ def not_found(request):
     'is_embeddable': request.GET.get('is_embeddable', False)
   })
 
+def server_error(request):
+  return render('500.mako', request, {
+    'is_embeddable': request.GET.get('is_embeddable', False)
+  })
+
 
 @access_log_level(logging.WARN)
 def log_view(request):