Added missing path() method

This commit is contained in:
Tris 2022-10-19 09:02:34 +11:00
parent 845762400f
commit 4284b4a05f
2 changed files with 13 additions and 2 deletions

View File

@ -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)

View File

@ -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'))