Sfoglia il codice sorgente

[notebook] Utility to create a notebook

Romain Rigaux 10 anni fa
parent
commit
7dee863335

+ 43 - 0
desktop/libs/notebook/src/notebook/models.py

@@ -23,6 +23,8 @@ from django.utils.html import escape
 
 from desktop.lib.i18n import smart_unicode
 
+from notebook.connectors.base import Notebook
+
 
 # Materialize and HTML escape results
 def escape_rows(rows, nulls_only=False):
@@ -46,3 +48,44 @@ def escape_rows(rows, nulls_only=False):
     data.append(escaped_row)
 
   return data
+
+
+def make_notebook(name='Browse', editor_type='hive', statement='', status='ready', files=None, functions=None, settings=None):
+  editor = Notebook()
+
+  editor.data = json.dumps({
+    'description': '',
+    'sessions': [
+      {
+         'type': editor_type,
+         'properties': [
+
+         ],
+         'id': None
+      }
+    ],
+    'selectedSnippet': editor_type,
+    'type': 'query-%s' % editor_type,
+
+    'snippets': [
+      {
+         'status': status,
+         'id': 'e8b323b3-88ef-3a84-6264-af11fa5fbefb',
+         'statement_raw': statement,
+         'statement': statement,
+         'type': editor_type,
+         'properties': {
+            'files': [] if files is None else files,
+            'functions': [] if functions is None else functions,
+            'settings': [] if settings is None else settings
+         },
+         'name': name,
+         'database': 'default',
+         'result': {}
+      }
+    ],
+    'name': name
+  })
+  
+  return editor
+

+ 2 - 37
desktop/libs/notebook/src/notebook/views.py

@@ -31,6 +31,7 @@ from notebook.connectors.base import Notebook, get_api
 from notebook.management.commands.notebook_setup import Command
 from notebook.connectors.spark_shell import SparkApi
 from notebook.conf import get_interpreters
+from notebook.models import make_notebook
 
 
 LOG = logging.getLogger(__name__)
@@ -105,43 +106,7 @@ def browse(request, database, table):
   snippet = {'type': editor_type}
   sql_select = get_api(request.user, snippet, request.fs, request.jt).get_select_star_query(snippet, database, table)
 
-  editor = Notebook()
-  editor.data = json.dumps({
-    'description': '',
-    'sessions': [
-      {
-         'type': 'hive',
-         'properties': [
-
-         ],
-         'id': None
-      }
-    ],
-    'selectedSnippet': 'hive',
-    'type': 'query-%s' % editor_type,
-
-    'snippets': [
-      {
-         'status': 'ready-execute',
-         'id': 'e8b323b3-88ef-3a84-6264-af11fa5fbefb',
-         'statement_raw': sql_select,
-         'statement': sql_select,
-         'type': editor_type,
-         'properties': {
-            'files': [
-            ],
-            'functions': [
-            ],
-            'settings': [
-            ]
-         },
-         'name': 'Browse',
-         'database': 'default',
-         'result': {}
-      }
-    ],
-    'name': 'Browse'
-  })
+  editor = make_notebook(name='Browse', editor_type=editor_type, statement=sql_select, status='ready-execute')
 
   return render('editor.mako', request, {
       'notebooks_json': json.dumps([editor.get_data()]),