Bläddra i källkod

HUE-3645 [editor] Upgrade session properties when opening saved editor documents

Jenny Kim 9 år sedan
förälder
incheckning
1b16c12
2 ändrade filer med 20 tillägg och 11 borttagningar
  1. 2 9
      desktop/libs/notebook/src/notebook/api.py
  2. 18 2
      desktop/libs/notebook/src/notebook/views.py

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

@@ -31,6 +31,7 @@ from notebook.connectors.base import get_api, Notebook, QueryExpired, SessionExp
 from notebook.decorators import api_error_handler, check_document_access_permission, check_document_modify_permission
 from notebook.github import GithubClient
 from notebook.models import escape_rows
+from notebook.views import upgrade_session_properties
 
 
 LOG = logging.getLogger(__name__)
@@ -335,15 +336,7 @@ def open_notebook(request):
 
   notebook_id = request.GET.get('notebook')
   notebook = Notebook(document=Document2.objects.get(id=notebook_id))
-
-  # Check session properties format and upgrade if necessary
-  data = notebook.get_data()
-  for session in data['sessions']:
-    api = get_api(request, session)
-    if 'type' in session and hasattr(api, 'upgrade_properties'):
-      properties = session.get('properties', None)
-      session['properties'] = api.upgrade_properties(session['type'], properties)
-  notebook.data = json.dumps(data)
+  notebook = upgrade_session_properties(request, notebook)
 
   response['status'] = 0
   response['notebook'] = notebook.get_json()

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

@@ -85,12 +85,14 @@ def editor(request):
   editor_id = request.GET.get('editor')
   editor_type = request.GET.get('type', 'hive')
 
-  if editor_id:
+  if editor_id:  # Open existing saved editor document
     editor = Notebook(document=Document2.objects.get(id=editor_id))
     editor_type = editor.get_data()['type'].rsplit('-', 1)[-1]
-  else:
+    editor = upgrade_session_properties(request, notebook=editor)
+  else:  # Create new editor
     editor = Notebook()
     data = editor.get_data()
+
     data['name'] = ''
     data['type'] = 'query-%s' % editor_type  # TODO: Add handling for non-SQL types
     editor.data = json.dumps(data)
@@ -215,3 +217,17 @@ def install_examples(request):
     response['message'] = _('A POST request is required.')
 
   return JsonResponse(response)
+
+
+def upgrade_session_properties(request, notebook):
+  # Upgrade session data if using old format
+  data = notebook.get_data()
+
+  for session in data.get('sessions', []):
+    api = get_api(request, session)
+    if 'type' in session and hasattr(api, 'upgrade_properties'):
+      properties = session.get('properties', None)
+      session['properties'] = api.upgrade_properties(session['type'], properties)
+
+  notebook.data = json.dumps(data)
+  return notebook