瀏覽代碼

Update multiple_gist_dirs UT and use queryset logic in MultipleObjectsReturned exception

Harshg999 4 年之前
父節點
當前提交
43acb88f2d
共有 2 個文件被更改,包括 9 次插入17 次删除
  1. 6 13
      desktop/core/src/desktop/api2_tests.py
  2. 3 4
      desktop/core/src/desktop/models.py

+ 6 - 13
desktop/core/src/desktop/api2_tests.py

@@ -699,8 +699,8 @@ class TestDocumentGist(object):
         json.loads(Document2.objects.get(type='gist', uuid=gist2['uuid']).data)['statement_raw']
     )
 
-  def test_handle_multiple_gist_dir(self):
-    # Create multiple gist directories and then make a new gist
+
+  def test_multiple_gist_dirs_on_gist_create(self):
     home_dir = Directory.objects.get_home_directory(self.user)
 
     gist_dir1 = Directory.objects.create(name=Document2.GIST_DIR, owner=self.user, parent_directory=home_dir)
@@ -709,21 +709,14 @@ class TestDocumentGist(object):
     assert_equal(2, Directory.objects.filter(name=Document2.GIST_DIR, type='directory').count())
 
     response = self._create_gist(
-        statement='SELECT 12345',
-        doc_type='hive-query',
-        name='test_gist_create',
+      statement='SELECT 12345',
+      doc_type='hive-query',
+      name='test_gist_create',
     )
-    gist = json.loads(response.content)
 
-    # Gist directories merged into one
     assert_equal(1, Directory.objects.filter(name=Document2.GIST_DIR, type='directory').count())
+    assert_equal(Document2.GIST_DIR, Document2.objects.get(type='gist', name='test_gist_create').parent_directory.name)
 
-    assert_true(Document2.objects.get(type='gist', name='test_gist_create'))
-    assert_true(Document2.objects.get(type='gist', uuid=gist['uuid']))
-    assert_equal(
-        'SELECT 12345',
-        json.loads(Document2.objects.get(type='gist', uuid=gist['uuid']).data)['statement_raw']
-    )
 
   def test_get(self):
     response = self._create_gist(

+ 3 - 4
desktop/core/src/desktop/models.py

@@ -1073,12 +1073,11 @@ class Document2Manager(models.Manager, Document2QueryMixin):
       gist_dir, created = Directory.objects.get_or_create(name=Document2.GIST_DIR, owner=user, parent_directory=home_dir)
       if created:
         LOG.info('Successfully created gist directory for user: %s' % user.username)
-        
     except Directory.MultipleObjectsReturned:
-      LOG.error('Multiple Gist directories detected. Merging all into one.')
+      LOG.exception('Multiple Gist directories detected. Merging all into one.')
 
-      gist_dirs = list(self.filter(owner=user, parent_directory=home_dir, name=Document2.GIST_DIR, type='directory').order_by('-last_modified'))
-      gist_dir = gist_dirs.pop()
+      gist_dir = self.filter(owner=user, parent_directory=home_dir, name=Document2.GIST_DIR, type='directory').latest('-last_modified')
+      gist_dirs = self.filter(owner=user, parent_directory=home_dir, name=Document2.GIST_DIR, type='directory').exclude(uuid=gist_dir.uuid)
       for dir in gist_dirs:
         dir.children.exclude(name='.Trash').update(parent_directory=gist_dir)
         dir.delete()