فهرست منبع

HUE-4866 [editor] Support extracting query variables from a file

Romain Rigaux 9 سال پیش
والد
کامیت
6897617c6b

+ 25 - 2
desktop/libs/notebook/src/notebook/api.py

@@ -703,7 +703,7 @@ def export_result(request):
 @check_document_access_permission()
 @api_error_handler
 def statement_risk(request):
-  response = {'status': -1, 'message': _('Risk analysis failed.')}
+  response = {'status': -1, 'message': ''}
 
   notebook = json.loads(request.POST.get('notebook', '{}'))
   snippet = json.loads(request.POST.get('snippet', '{}'))
@@ -720,7 +720,7 @@ def statement_risk(request):
 @check_document_access_permission()
 @api_error_handler
 def statement_compatibility(request):
-  response = {'status': -1, 'message': _('Compatibility analysis failed.')}
+  response = {'status': -1, 'message': ''}
 
   notebook = json.loads(request.POST.get('notebook', '{}'))
   snippet = json.loads(request.POST.get('snippet', '{}'))
@@ -734,3 +734,26 @@ def statement_compatibility(request):
 
   return JsonResponse(response)
 
+
+@require_POST
+@check_document_access_permission()
+@api_error_handler
+def statement_from_file(request):
+  response = {'status': -1, 'message': ''}
+
+  notebook = json.loads(request.POST.get('notebook', '{}'))
+  snippet = json.loads(request.POST.get('snippet', '{}'))
+
+  response['statement'] = _get_statement_from_file(request.user, request.fs, snippet)
+  response['status'] = 0
+
+  return JsonResponse(response)
+
+
+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)

+ 0 - 2
desktop/libs/notebook/src/notebook/connectors/base.py

@@ -282,5 +282,3 @@ class Api(object):
   def statement_risk(self, notebook, snippet): raise NotImplementedError()
 
   def statement_compatibility(self, notebook, snippet, source_platform, target_platform): raise NotImplementedError()
-
-  def statement_variables(self, notebook, snippet): raise NotImplementedError()

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

@@ -524,10 +524,6 @@ class HS2Api(Api):
     return api.query_compatibility(source_platform, target_platform, query)
 
 
-  def statement_variables(self, notebook, snippet):
-    pass
-
-
   def upgrade_properties(self, lang='hive', properties=None):
     upgraded_properties = copy.deepcopy(self.get_properties(lang))
 

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

@@ -420,7 +420,16 @@ var EditorViewModel = (function() {
     self.statementTypes = ko.observableArray(['text', 'file']); // Maybe computed later for spark
     self.statementPath = ko.observable(typeof snippet.statementPath != "undefined" && snippet.statementPath != null ? snippet.statementPath : '');
     self.statementPath.subscribe(function(newVal) {
-      self.statement_raw('aaa ${aa} ddd');
+      $.post("/notebook/api/statement_from_file", {
+        notebook: ko.mapping.toJSON(notebook.getContext()),
+        snippet: ko.mapping.toJSON(self.getContext())
+      }, function(data) {
+        if (data.status == 0) {
+          self.statement_raw(data.statement); // why not picked up but 'aaaaaaa' ok?
+        } else {
+          self._ajaxError(data);
+        }
+      });
     });
     self.statement_raw = ko.observable(typeof snippet.statement_raw != "undefined" && snippet.statement_raw != null ? snippet.statement_raw : '');
     self.selectedStatement = ko.observable('');

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

@@ -62,6 +62,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_history/?', 'get_history', name='get_history'),
   url(r'^api/clear_history/?', 'clear_history', name='clear_history'),