Ver código fonte

HUE-9066 [notebook] Open gist in editor

Romain 6 anos atrás
pai
commit
739f55cfc5

+ 6 - 2
desktop/core/src/desktop/api2.py

@@ -39,6 +39,7 @@ from django.views.decorators.http import require_POST
 
 from metadata.conf import has_catalog
 from metadata.catalog_api import search_entities as metadata_search_entities, _highlight, search_entities_interactive as metadata_search_entities_interactive
+from notebook.api import _create_notebook
 from notebook.connectors.altus import SdxApi, AnalyticDbApi, DataEngApi, DataWarehouse2Api
 from notebook.connectors.base import Notebook, get_interpreter
 
@@ -853,8 +854,11 @@ def gist_get(request):
 
   # check type
   # return new notebook but with default text
-
-  return JsonResponse(response)
+  return _create_notebook(
+    editor_type='query-impala',
+    #default_content=json.dumps({'statement'})
+  )
+  # return JsonResponse(response)
 
 
 def search_entities(request):

+ 24 - 1
desktop/libs/notebook/src/notebook/api.py

@@ -62,13 +62,16 @@ def create_notebook(request):
   editor_type = request.POST.get('type', 'notebook')
   directory_uuid = request.POST.get('directory_uuid')
 
-  editor = Notebook()
+  editor = _create_notebook(editor_type=editor_type, directory_uuid=directory_uuid)
   data = editor.get_data()
 
   if editor_type != 'notebook':
     data['name'] = ''
     data['type'] = 'query-%s' % editor_type  # TODO: Add handling for non-SQL types
 
+  if default_content is not None:
+    data.update(default_content)
+
   data['directoryUuid'] = directory_uuid
   editor.data = json.dumps(data)
 
@@ -78,6 +81,26 @@ def create_notebook(request):
   return JsonResponse(response)
 
 
+def _create_notebook(editor_type, directory_uuid=None, default_content=None):
+  notebook = Notebook()
+  data = notebook.get_data()
+
+  if editor_type != 'notebook':
+    data['name'] = ''
+    data['type'] = 'query-%s' % editor_type  # TODO: Add handling for non-SQL types
+
+  if default_content is not None:
+    data.update(default_content)
+
+  data['directoryUuid'] = directory_uuid
+  notebook.data = json.dumps(data)
+
+  response['notebook'] = editor.get_data()
+  response['status'] = 0
+
+  return JsonResponse(response)
+
+
 @require_POST
 @check_document_access_permission
 @api_error_handler

+ 17 - 4
desktop/libs/notebook/src/notebook/views.py

@@ -157,12 +157,25 @@ def browse(request, database, table, partition_spec=None):
   compute = json.loads(request.POST.get('cluster', '{}'))
 
   if request.method == 'POST':
-    notebook = make_notebook(name='Execute and watch', editor_type=editor_type, statement=statement, status='ready-execute',
-                             is_task=True, namespace=namespace, compute=compute)
+    notebook = make_notebook(
+        name='Execute and watch',
+        editor_type=editor_type,
+        statement=statement,
+        status='ready-execute',
+        is_task=True,
+        namespace=namespace,
+        compute=compute
+    )
     return JsonResponse(notebook.execute(request, batch=False))
   else:
-    editor = make_notebook(name='Browse', editor_type=editor_type, statement=statement, status='ready-execute',
-                           namespace=namespace, compute=compute)
+    editor = make_notebook(
+        name='Browse',
+        editor_type=editor_type,
+        statement=statement,
+        status='ready-execute',
+        namespace=namespace,
+        compute=compute
+    )
 
     return render('editor.mako', request, {
         'notebooks_json': json.dumps([editor.get_data()]),