فهرست منبع

HUE-4866 [editor] Perform variable replacements in multi query in file queries

Romain Rigaux 9 سال پیش
والد
کامیت
2e4f250b62

+ 12 - 7
desktop/libs/notebook/src/notebook/api.py

@@ -739,12 +739,18 @@ def statement_compatibility(request):
 @require_POST
 @check_document_access_permission()
 @api_error_handler
-def statement_from_file(request):
+def get_external_statement(request):
   response = {'status': -1, 'message': ''}
 
   notebook = json.loads(request.POST.get('notebook', '{}'))
   snippet = json.loads(request.POST.get('snippet', '{}'))
 
+  if snippet.get('statementType') == 'file':
+    snippet['statement'] = _get_statement_from_file(request.user, request.fs, snippet)
+  if snippet.get('statementType') == 'document':
+    notebook = Notebook(Document2.objects.get_by_uuid(user=request.user, uuid=snippet['statementPath'], perm_type='read'))
+    snippet['statement'] = notebook.get_str()
+
   response['statement'] = _get_statement_from_file(request.user, request.fs, snippet)
   response['status'] = 0
 
@@ -752,9 +758,8 @@ def statement_from_file(request):
 
 
 def _get_statement_from_file(user, fs, snippet):
-  if snippet.get('statementType') == 'file':
-    script_path = snippet['statementPath']
-    if script_path:
-      script_path = script_path.replace('hdfs://', '')
-      if fs.do_as_user(user, fs.exists, script_path):
-        return fs.do_as_user(user, fs.read, script_path, 0, 16 * 1024 ** 2)
+  script_path = snippet['statementPath']
+  if script_path:
+    script_path = script_path.replace('hdfs://', '')
+    if fs.do_as_user(user, fs.exists, script_path):
+      return fs.do_as_user(user, fs.read, script_path, 0, 16 * 1024 ** 2)

+ 0 - 14
desktop/libs/notebook/src/notebook/connectors/hiveserver2.py

@@ -610,12 +610,6 @@ class HS2Api(Api):
     else:
       statement_id = 0
 
-    if snippet.get('statementType') == 'file':
-      snippet['statement'] = self._get_statement_from_file(snippet)
-    elif snippet.get('statementType') == 'document':
-      notebook = Notebook(Document2.objects.get_by_uuid(user=self.user, uuid=snippet['statementPath'], perm_type='read'))
-      snippet['statement'] = notebook.get_str()
-
     statements = self._get_statements(snippet['statement'])
 
     resp = {
@@ -688,14 +682,6 @@ class HS2Api(Api):
 
     return dbms.get(self.user, query_server=get_query_server_config(name=name))
 
-  def _get_statement_from_file(self, snippet):
-    if snippet.get('statementType') == 'file':
-      script_path = snippet['statementPath']
-      if script_path:
-        script_path = script_path.replace('hdfs://', '')
-        if self.request.fs.do_as_user(self.user, self.request.fs.exists, script_path):
-          return self.request.fs.do_as_user(self.user, self.request.fs.read, script_path, 0, 16 * 1024 ** 2)
-
 
   def _parse_job_counters(self, job_id):
     # Attempt to fetch total records from the job's Hive counter

+ 1 - 1
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -427,7 +427,7 @@ var EditorViewModel = (function() {
     self.statementPath = ko.observable(typeof snippet.statementPath != "undefined" && snippet.statementPath != null ? snippet.statementPath : '');
     self.statementPath.subscribe(function(newVal) {
       if (self.statementType() == 'file') {
-        $.post("/notebook/api/statement_from_file", {
+        $.post("/notebook/api/get_external_statement", {
           notebook: ko.mapping.toJSON(notebook.getContext()),
           snippet: ko.mapping.toJSON(self.getContext())
         }, function(data) {

+ 1 - 1
desktop/libs/notebook/src/notebook/urls.py

@@ -63,7 +63,7 @@ urlpatterns += patterns('notebook.api',
 
   url(r'^api/explain/?$', 'explain', name='explain'),
   url(r'^api/format/?$', 'format', name='format'),
-  url(r'^api/statement_from_file/?$', 'statement_from_file', name='statement_from_file'),
+  url(r'^api/get_external_statement/?$', 'get_external_statement', name='get_external_statement'),
 
   url(r'^api/get_history/?', 'get_history', name='get_history'),
   url(r'^api/clear_history/?', 'clear_history', name='clear_history'),