From 4284b4a05fe541ac76c8a2b1e8d23e0e5e120faa Mon Sep 17 00:00:00 2001 From: Tris Date: Wed, 19 Oct 2022 09:02:34 +1100 Subject: [PATCH] Added missing path() method --- byostorage/multi.py | 7 +++++-- byostorage/tests/test_multi_storage.py | 8 ++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/byostorage/multi.py b/byostorage/multi.py index 278b953..bf8a7ea 100644 --- a/byostorage/multi.py +++ b/byostorage/multi.py @@ -45,18 +45,21 @@ class MultiStorage(Storage): def _proxy(self, method, name, *args, **kwargs): storage, p = self.split(name) result = getattr(self.get_storage(storage), method)(p, *args, **kwargs) - logger.debug("Proxy: %s(%r, *%r, **%r) => %r", method, name, args, kwargs, result) + logger.debug("Proxy: %s(%r, *%r, **%r) => %r", method, p, args, kwargs, result) return result def _proxy_name(self, method, name, *args, **kwargs): storage, p = self.split(name) result = getattr(self.get_storage(storage), method)(p, *args, **kwargs) - logger.debug("Proxy: %s(%r, *%r, **%r) => %s:%s", method, name, args, kwargs, storage, result) + logger.debug("Proxy: %s(%r, *%r, **%r) => %s:%s", method, p, args, kwargs, storage, result) return self.join(storage, result) def _open(self, name, mode='rb'): return self._proxy('open', name, mode) + def path(self, name): + return self._proxy('path', name) + def save(self, name, content, max_length=None): return self._proxy_name('save', name, content, max_length) diff --git a/byostorage/tests/test_multi_storage.py b/byostorage/tests/test_multi_storage.py index 315ffed..4125452 100644 --- a/byostorage/tests/test_multi_storage.py +++ b/byostorage/tests/test_multi_storage.py @@ -2,6 +2,7 @@ from django.test import TestCase from byostorage.multi import MultiStorage from django.core.files.storage import FileSystemStorage +import os.path class MultiStorageTestCase(TestCase): @@ -34,3 +35,10 @@ class MultiStorageTestCase(TestCase): }) self.assertEqual(ms.url('https://google.com'), 'https://google.com') + + def test_local_methods(self): + ms = MultiStorage({ + 'local': {'storage': 'django.core.files.storage.FileSystemStorage', 'location': 'local_store'} + }) + + self.assertEqual(ms.path('local:foo/bar.txt'), os.path.realpath('local_store/foo/bar.txt')) \ No newline at end of file