Skip to content

Commit d6ecd11

Browse files
committed
fix: LCFile creaet_at and updated_at
close #533
1 parent f621cac commit d6ecd11

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

leancloud/file_.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ def __init__(self, name="", data=None, mime_type=None):
3535
self._name = name
3636
self.key = None
3737
self.id = None
38+
self.created_at = None
39+
self.updated_at = None
3840
self._url = None
3941
self._successful_url = None
4042
self._acl = None
@@ -226,9 +228,18 @@ def _save_external(self):
226228
}
227229
response = client.post("/files".format(self._name), data)
228230
content = response.json()
231+
229232
self.id = content["objectId"]
233+
230234
self._successful_url = self._url
231235

236+
_created_at = utils.decode_date_string(content.get("createdAt"))
237+
_updated_at = utils.decode_updated_at(content.get("updatedAt"), _created_at)
238+
if _created_at is not None:
239+
self.created_at = _created_at
240+
if _updated_at is not None:
241+
self.updated_at = _updated_at
242+
232243
def _save_to_qcloud(self, token, upload_url):
233244
headers = {
234245
"Authorization": token,
@@ -295,6 +306,13 @@ def _update_data(self, server_data):
295306
self._mime_type = server_data["mime_type"]
296307
if "metaData" in server_data:
297308
self._metadata = server_data.get("metaData")
309+
310+
_created_at = utils.decode_date_string(server_data.get("createdAt"))
311+
_updated_at = utils.decode_updated_at(server_data.get("updatedAt"), _created_at)
312+
if _created_at is not None:
313+
self.created_at = _created_at
314+
if _updated_at is not None:
315+
self.updated_at = _updated_at
298316

299317
def _get_file_token(self):
300318
data = {

leancloud/utils.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,12 +137,16 @@ def decode(key, value):
137137
if _type == "File":
138138
f = leancloud.File(value["name"])
139139
meta_data = value.get("metaData")
140-
key = value.get("key")
141-
if meta_data:
142-
f._metadata = meta_data
140+
file_key = value.get("key")
141+
if file_key is not None:
142+
f.key = file_key
143+
if meta_data is not None:
144+
f._metadata = meta_data
143145
f._url = value["url"]
144146
f._successful_url = value["url"]
145147
f.id = value["objectId"]
148+
f.created_at = decode_date_string(value.get("createdAt"))
149+
f.updated_at = decode_date_string(value.get("updatedAt"))
146150
return f
147151

148152

tests/test_file.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ def test_save(): # type: () -> None
108108
assert f.name == "Blah.txt"
109109
assert f.mime_type == "text/plain"
110110
assert not f.url.endswith(".")
111+
assert f.created_at == f.updated_at
111112

112113

113114
@with_setup(setup_func)
@@ -118,6 +119,7 @@ def test_save_with_specified_key(): # type: () -> None
118119
f.save()
119120

120121
assert f.id
122+
assert f.created_at == f.updated_at
121123
assert f.name == "Blah.txt"
122124
assert f.mime_type == "text/plain"
123125
path = urlparse(f.url).path
@@ -146,9 +148,11 @@ def test_query(): # type: () -> None
146148
files = leancloud.Query("File").find()
147149
for f in files:
148150
assert isinstance(f, File)
151+
assert f.id
149152
assert f.url
150153
assert f.name
151154
assert f.metadata
155+
assert f.created_at == f.updated_at
152156
if f.metadata.get("__source") == 'external':
153157
assert f.url
154158
else:
@@ -161,6 +165,7 @@ def test_scan(): # type: () -> None
161165
files = leancloud.Query("File").scan()
162166
for f in files:
163167
assert isinstance(f, File)
168+
assert f.created_at == f.updated_at
164169
assert f.name
165170
assert f.metadata
166171
if f.metadata.get("__source") == 'external':
@@ -176,6 +181,7 @@ def test_save_external(): # type: () -> None
176181
f = File.create_with_url(file_name, file_url)
177182
f.save()
178183
assert f.id
184+
assert f.created_at == f.updated_at
179185
file_on_cloud = File.create_without_data(f.id)
180186
file_on_cloud.fetch()
181187
assert file_on_cloud.name == file_name

0 commit comments

Comments
 (0)