Sfoglia il codice sorgente

Check merge dir uuid with initial gist_dir1 and refactor dup_gist_dir merge logic

Harshg999 4 anni fa
parent
commit
9133f973bb

+ 1 - 0
desktop/core/src/desktop/api2_tests.py

@@ -719,6 +719,7 @@ class TestDocumentGist(object):
 
     assert_equal(1, Directory.objects.filter(name=Document2.GIST_DIR, type='directory').count())
     assert_true(Directory.objects.filter(name=Document2.GIST_DIR, type='directory', uuid=gist_parent_uuid).exists())
+    assert_equal(gist_dir1.uuid, Directory.objects.get(name=Document2.GIST_DIR, type='directory', parent_directory=home_dir).uuid)
 
 
   def test_get(self):

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

@@ -1076,11 +1076,14 @@ class Document2Manager(models.Manager, Document2QueryMixin):
     except Directory.MultipleObjectsReturned:
       LOG.exception('Multiple Gist directories detected. Merging all into one.')
 
-      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:
+      all_gist_dirs = self.filter(owner=user, parent_directory=home_dir, name=Document2.GIST_DIR, type='directory').order_by('-last_modified')
+      gist_dir = all_gist_dirs.last()
+      gist_dirs_dup = all_gist_dirs.exclude(uuid=gist_dir.uuid)
+
+      for dir in gist_dirs_dup:
         dir.children.exclude(name='.Trash').update(parent_directory=gist_dir)
-        dir.delete()
+
+      gist_dirs_dup.delete()
 
     return gist_dir