瀏覽代碼

HUE-4898 [core] Exporting documents should generate a filename with date and num docs

Jenny Kim 9 年之前
父節點
當前提交
4bc6b89
共有 2 個文件被更改,包括 29 次插入2 次删除
  1. 4 2
      desktop/core/src/desktop/api2.py
  2. 25 0
      desktop/core/src/desktop/tests_doc2.py

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

@@ -361,6 +361,8 @@ def export_documents(request):
 
   # Get PKs of documents to export
   doc_ids = [doc.pk for doc in export_doc_set]
+  num_docs = len(doc_ids)
+  filename = 'hue-documents-%s-(%s)' % (datetime.today().strftime('%Y-%m-%d'), num_docs)
 
   f = StringIO.StringIO()
 
@@ -383,11 +385,11 @@ def export_documents(request):
     zfile.close()
     response = HttpResponse(content_type="application/zip")
     response["Content-Length"] = len(f.getvalue())
-    response['Content-Disposition'] = 'attachment; filename="hue-documents.zip"'
+    response['Content-Disposition'] = 'attachment; filename="%s".zip' % filename
     response.write(f.getvalue())
     return response
   else:
-    return make_response(f.getvalue(), 'json', 'hue-documents')
+    return make_response(f.getvalue(), 'json', filename)
 
 
 @ensure_csrf_cookie

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

@@ -18,6 +18,8 @@
 
 import json
 
+from datetime import datetime
+
 from nose.tools import assert_equal, assert_false, assert_true, assert_not_equal
 from django.contrib.auth.models import User
 
@@ -847,6 +849,29 @@ class TestDocument2ImportExport(object):
     assert_true('query2.sql' in [doc['fields']['name'] for doc in documents])
 
 
+  def test_export_documents_file_name(self):
+    query1 = Document2.objects.create(name='query1.sql', type='query-hive', owner=self.user, data={},
+                                      parent_directory=self.home_dir)
+    query2 = Document2.objects.create(name='query2.sql', type='query-hive', owner=self.user, data={},
+                                      parent_directory=self.home_dir)
+    query3 = Document2.objects.create(name='query3.sql', type='query-hive', owner=self.user, data={},
+                                      parent_directory=self.home_dir, is_history=True)
+    workflow = Document2.objects.create(name='test.wf', type='oozie-workflow2', owner=self.user, data={},
+                                        parent_directory=self.home_dir)
+    workflow.dependencies.add(query1)
+    workflow.dependencies.add(query2)
+    workflow.dependencies.add(query3)
+
+    # Test that exporting multiple workflows with overlapping dependencies works
+    workflow2 = Document2.objects.create(name='test2.wf', type='oozie-workflow2', owner=self.user, data={},
+                                         parent_directory=self.home_dir)
+    workflow2.dependencies.add(query1)
+
+    # Test that exporting to a file includes the date and number of documents in the filename
+    response = self.client.get('/desktop/api2/doc/export/', {'documents': json.dumps([workflow.id, workflow2.id])})
+    assert_equal(response['Content-Disposition'], 'attachment; filename=hue-documents-%s-(4).json' % datetime.today().strftime('%Y-%m-%d'))
+
+
   def test_export_directories_with_children(self):
     # Test that exporting a directory exports children docs
     # /