浏览代码

HUE-6257 [home] Last Modified timestamp gets updated when a file is moved to a different folder

Jenny Kim 8 年之前
父节点
当前提交
74dcd8b
共有 2 个文件被更改,包括 9 次插入0 次删除
  1. 4 0
      desktop/core/src/desktop/models.py
  2. 5 0
      desktop/core/src/desktop/tests_doc2.py

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

@@ -1227,8 +1227,12 @@ class Document2(models.Model):
       raise FilesystemException(_('Target with UUID %s is not a directory') % directory.uuid)
 
     if directory.can_write_or_exception(user=user):
+      # Restore last_modified date after save
+      original_last_modified = self.last_modified
       self.parent_directory = directory
       self.save()
+      # Use update instead of save() so that last_modified date is not modified automatically
+      Document2.objects.filter(id=self.id).update(last_modified=original_last_modified)
 
     return self
 

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

@@ -137,6 +137,7 @@ class TestDocument2(object):
     source_dir = Directory.objects.create(name='test_mv_file_src', owner=self.user, parent_directory=self.home_dir)
     target_dir = Directory.objects.create(name='test_mv_file_dst', owner=self.user, parent_directory=self.home_dir)
     doc = Document2.objects.create(name='query1.sql', type='query-hive', owner=self.user, data={}, parent_directory=source_dir)
+    orig_last_modified = doc.last_modified
 
     # Verify original paths before move operation
     response = self.client.get('/desktop/api2/doc/', {'uuid': source_dir.uuid})
@@ -163,6 +164,10 @@ class TestDocument2(object):
     data = json.loads(response.content)
     assert_equal('/test_mv_file_dst/query1.sql', data['document']['path'])
 
+    # Verify that last_modified is intact
+    doc = Document2.objects.get(id = doc.id)
+    assert_equal(orig_last_modified.strftime('%Y-%m-%dT%H:%M:%S'), doc.last_modified.strftime('%Y-%m-%dT%H:%M:%S'))
+
 
   def test_directory_move(self):
     source_dir = Directory.objects.create(name='test_mv', owner=self.user, parent_directory=self.home_dir)