Pārlūkot izejas kodu

HUE-3493 [core] Add flag to API to also return the document data

e.g. data=true

/desktop/api2/doc/?uuid=xxxx&data=true
Romain Rigaux 9 gadi atpakaļ
vecāks
revīzija
a1360a8

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

@@ -36,7 +36,7 @@ from desktop.lib.django_util import JsonResponse
 from desktop.lib.exceptions_renderable import PopupException
 from desktop.lib.export_csvxls import make_response
 from desktop.lib.i18n import smart_str, force_unicode
-from desktop.models import Document2, Document, Directory, DocumentTag, FilesystemException, uuid_default
+from desktop.models import Document2, Document, Directory, FilesystemException, uuid_default
 
 
 LOG = logging.getLogger(__name__)
@@ -117,9 +117,11 @@ def get_document(request):
                   Accepts the form "-last_modified", which sorts in descending order.
                   Default to "-last_modified".
     text=<frag> - Search for fragment "frag" in names and descriptions.
+    data=<false|true> - Return all the data of the document. Default to false.
   """
   path = request.GET.get('path', '/')
   uuid = request.GET.get('uuid')
+  with_data = request.GET.get('data', 'false').lower() == 'true'
 
   if uuid:
     document = Document2.objects.get_by_uuid(uuid)
@@ -132,9 +134,13 @@ def get_document(request):
   response = {
     'document': document.to_dict(),
     'parent': document.parent_directory.to_dict() if document.parent_directory else None,
-    'children': []
+    'children': [],
+    'data': ''
   }
 
+  if with_data:
+    response['data'] = json.loads(document.data)
+
   # Get children documents if this is a directory
   if document.is_directory:
     directory = Directory.objects.get(id=document.id)

+ 22 - 0
desktop/core/src/desktop/tests_doc2.py

@@ -345,6 +345,28 @@ class TestDocument2(object):
     assert_true('circular dependency' in data['message'], data)
 
 
+  def test_api_get_data(self):
+    doc_data = json.dumps({'info': 'hello'})
+    doc = Document2.objects.create(name='query1.sql', type='query-hive', owner=self.user, data=doc_data)
+
+    response = self.client.get('/desktop/api2/doc/', {
+        'uuid': doc.uuid,
+    })
+    data = json.loads(response.content)
+
+    assert_true('document' in data, data)
+    assert_false(data['data'], data)
+
+    response = self.client.get('/desktop/api2/doc/', {
+        'uuid': doc.uuid,
+        'data': 'true'
+    })
+    data = json.loads(response.content)
+
+    assert_true('data' in data, data)
+    assert_equal(data['data'], json.loads(doc_data))
+
+
 class TestDocument2Permissions(object):
 
   def setUp(self):

+ 0 - 6
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -1488,12 +1488,6 @@
       }
     };
 
-    self.openNotebook = function (uuid) {
-    	// fetch
-    	self.notebooks.removeAll();
-    	self.loadNotebook()
-    };
-
     self.newNotebook = function () {
       var notebook = new Notebook(self, {});
       self.notebooks.push(notebook);