Explorar o código

HUE-6136 [core] Retain original last_modified date after setting is_trashed for converted docs

krish %!s(int64=8) %!d(string=hai) anos
pai
achega
4824a3a

+ 5 - 1
desktop/core/src/desktop/converters.py

@@ -156,12 +156,16 @@ class DocumentConverter(object):
       LOG.info('Successfully imported %d documents' % len(self.imported_docs))
 
     # Set is_trashed field for old documents with is_trashed=None
-    docs = Document2.objects.filter(owner=self.user, is_trashed=None)
+    docs = Document2.objects.filter(owner=self.user, is_trashed=None).exclude(is_history=True)
     for doc in docs:
       try:
         if doc.path and doc.path != '/.Trash':
+          doc_last_modified = doc.last_modified
           doc.is_trashed = doc.path.startswith('/.Trash')
           doc.save()
+
+          # save() updates the last_modified to current time. Resetting it using update()
+          Document2.objects.filter(id=doc.id).update(last_modified=doc_last_modified)
       except Exception, e:
         LOG.exception("Failed to set is_trashed field with exception: %s" % e)
 

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

@@ -460,6 +460,16 @@ class TestDocument2(object):
       query1 = Document2.objects.create(name='new_query.sql', type='query-hive', owner=self.user, data={}, parent_directory=dir)
       assert_true(query1.is_trashed is False)
 
+      # Create history doc
+      query1.is_history = True
+      query1.save()
+
+      query1 = Document2.objects.get(uuid=query1.uuid)
+      query1_last_modified = query1.last_modified
+      dir_last_modified = dir.last_modified
+      query_last_modified = query.last_modified
+      trashed_query_last_modified = trashed_query.last_modified
+
       # Converter sets is_trashed=True for currently trashed docs
       converter = DocumentConverter(self.user)
       converter.convert()
@@ -469,6 +479,14 @@ class TestDocument2(object):
       assert_true(trashed_query.is_trashed)
       assert_true(dir.is_trashed is False)
       assert_true(query.is_trashed is False)
+
+      # last_modified should be retained post conversion
+      assert_equal(dir_last_modified, dir.last_modified)
+      assert_equal(query_last_modified, query.last_modified)
+      assert_equal(trashed_query_last_modified, trashed_query.last_modified)
+
+      query1 = Document2.objects.get(uuid=query1.uuid)
+      assert_equal(query1_last_modified, query1.last_modified)
     finally:
       # Delete docs
       dir.delete()