From 241ecfe2d66d269cd962d7c12ce1d5238b7c8f3d Mon Sep 17 00:00:00 2001 From: Emanuele Bertoldi Date: Sun, 6 Mar 2016 23:54:01 +0800 Subject: [PATCH 1/5] Replaced not working logic based on 'search' call with a simpler (and working) call to 'metadata'. --- storages/backends/dropbox.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/storages/backends/dropbox.py b/storages/backends/dropbox.py index 39b90b789..4ab0922ce 100644 --- a/storages/backends/dropbox.py +++ b/storages/backends/dropbox.py @@ -18,6 +18,7 @@ from storages.utils import setting from dropbox.client import DropboxClient +from dropbox.rest import ErrorResponse DATE_FORMAT = '%a, %d %b %Y %X +0000' @@ -51,8 +52,10 @@ def delete(self, name): self.client.file_delete(name) def exists(self, name): - response = self.client.search('/', name, file_limit=1) - return bool(response) + try: + return bool(self.client.metadata(name)) + except ErrorResponse: + return False def listdir(self, path): directories, files = [], [] From 839d5f592156e199cf98612be17a9f666460107c Mon Sep 17 00:00:00 2001 From: Emanuele Bertoldi Date: Sun, 6 Mar 2016 23:54:36 +0800 Subject: [PATCH 2/5] Added implementation of 'url' method. --- storages/backends/dropbox.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/storages/backends/dropbox.py b/storages/backends/dropbox.py index 4ab0922ce..dc1958757 100644 --- a/storages/backends/dropbox.py +++ b/storages/backends/dropbox.py @@ -81,6 +81,10 @@ def accessed_time(self, name): acc_time = datetime.strptime(metadata['client_mtime'], DATE_FORMAT) return acc_time + def url(self, name): + media = self.client.media(name) + return media['url'] + def _open(self, name, mode='rb'): remote_file = DropBoxFile(name, self) return remote_file From 8596b9926cff97228264556074e27118b10f19d5 Mon Sep 17 00:00:00 2001 From: Emanuele Bertoldi Date: Mon, 7 Mar 2016 00:06:47 +0800 Subject: [PATCH 3/5] Replaced 'search' call with 'metadata' in tests too. --- tests/test_dropbox.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_dropbox.py b/tests/test_dropbox.py index f5b4417e6..6f1f6849e 100644 --- a/tests/test_dropbox.py +++ b/tests/test_dropbox.py @@ -67,13 +67,13 @@ def setUp(self, *args): def test_delete(self, *args): self.storage.delete('foo') - @mock.patch('dropbox.client.DropboxClient.search', + @mock.patch('dropbox.client.DropboxClient.metadata', return_value=[FILE_FIXTURE]) def test_exists(self, *args): exists = self.storage.exists('foo') self.assertTrue(exists) - @mock.patch('dropbox.client.DropboxClient.search', + @mock.patch('dropbox.client.DropboxClient.metadata', return_value=[]) def test_not_exists(self, *args): exists = self.storage.exists('bar') From be0ffb530309401a8fe0e9f5d01fd1b8a2beae01 Mon Sep 17 00:00:00 2001 From: Emanuele Bertoldi Date: Mon, 7 Mar 2016 00:16:21 +0800 Subject: [PATCH 4/5] Added test for new 'url' method. --- tests/test_dropbox.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_dropbox.py b/tests/test_dropbox.py index 6f1f6849e..45869c1af 100644 --- a/tests/test_dropbox.py +++ b/tests/test_dropbox.py @@ -48,6 +48,10 @@ 'size': '0 bytes', 'thumb_exists': False } +FILE_MEDIA_FIXTURE = { + 'url': "https://dl.dropboxusercontent.com/1/view/foo", + 'expires: "Fri, 16 Sep 2011 01:01:25 +0000" +} __all__ = [ 'DropBoxTest', @@ -121,6 +125,12 @@ def test_read(self, *args): content = self.storage._read('foo') self.assertEqual(content, 'bar') + @mock.patch('dropbox.client.DropboxClient.media', + return_value=FILE_MEDIA_FIXTURE) + def test_url(self, *args): + url = self.storage.url('foo') + self.assertEqual(url, FILE_MEDIA_FIXTURE['url']) + class DropBoxFileTest(TestCase): @mock.patch('dropbox.client._OAUTH2_ACCESS_TOKEN_PATTERN', From edb497907c07c14db24bf0639a336c4742d7ca57 Mon Sep 17 00:00:00 2001 From: Emanuele Bertoldi Date: Mon, 7 Mar 2016 00:23:16 +0800 Subject: [PATCH 5/5] Missing quote mark. --- tests/test_dropbox.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_dropbox.py b/tests/test_dropbox.py index 45869c1af..41be28a13 100644 --- a/tests/test_dropbox.py +++ b/tests/test_dropbox.py @@ -49,8 +49,8 @@ 'thumb_exists': False } FILE_MEDIA_FIXTURE = { - 'url': "https://dl.dropboxusercontent.com/1/view/foo", - 'expires: "Fri, 16 Sep 2011 01:01:25 +0000" + 'url': 'https://dl.dropboxusercontent.com/1/view/foo', + 'expires': 'Fri, 16 Sep 2011 01:01:25 +0000', } __all__ = [