Skip to content

Commit 549c175

Browse files
committed
Merge pull request #468 from grapefruit623/issue311
Sync mtime with updated time
2 parents f577b30 + c25a6e7 commit 549c175

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

gcloud/storage/key.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import copy
1818
import mimetypes
1919
import os
20+
import time
21+
import datetime
2022
from StringIO import StringIO
2123
import urllib
2224

@@ -254,6 +256,13 @@ def download_to_filename(self, filename):
254256
with open(filename, 'wb') as file_obj:
255257
self.download_to_file(file_obj)
256258

259+
mtime = time.mktime(
260+
datetime.datetime.strptime(
261+
self.properties['updated'],
262+
'%Y-%m-%dT%H:%M:%S.%fz').timetuple()
263+
)
264+
os.utime(file_obj.name, (mtime, mtime))
265+
257266
# NOTE: Alias for boto-like API.
258267
get_contents_to_filename = download_to_filename
259268

gcloud/storage/test_key.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@ def test_download_to_file(self):
215215

216216
def test_download_to_filename(self):
217217
import httplib
218+
import os
219+
import time
220+
import datetime
218221
from tempfile import NamedTemporaryFile
219222
KEY = 'key'
220223
chunk1_response = {'status': httplib.PARTIAL_CONTENT,
@@ -227,15 +230,23 @@ def test_download_to_filename(self):
227230
)
228231
bucket = _Bucket(connection)
229232
MEDIA_LINK = 'http://example.com/media/'
230-
properties = {'mediaLink': MEDIA_LINK}
233+
properties = {'mediaLink': MEDIA_LINK,
234+
'updated': '2014-12-06T13:13:50.690Z'}
231235
key = self._makeOne(bucket, KEY, properties)
232236
key.CHUNK_SIZE = 3
233237
with NamedTemporaryFile() as f:
234238
key.download_to_filename(f.name)
235239
f.flush()
236240
with open(f.name) as g:
237241
wrote = g.read()
242+
mtime = os.path.getmtime(f.name)
243+
updatedTime = time.mktime(
244+
datetime.datetime.strptime(
245+
key.properties['updated'],
246+
'%Y-%m-%dT%H:%M:%S.%fz').timetuple()
247+
)
238248
self.assertEqual(wrote, 'abcdef')
249+
self.assertEqual(mtime, updatedTime)
239250

240251
def test_download_as_string(self):
241252
import httplib

0 commit comments

Comments
 (0)