Source code for oscar_invoices.storages

from django.core.files.storage import FileSystemStorage
from django.utils.deconstruct import deconstructible
from django.utils.functional import cached_property

from . import app_settings


[docs]@deconstructible class DocumentsStorage(FileSystemStorage): """ Custom filesystem storage for storing documents outside of media directory (destination folder - `settings.OSCAR_INVOICES_DOCUMENT_ROOT`) and restricting their public access via URL. """ def __init__(self, *args, **kwargs): super(DocumentsStorage, self).__init__(*args, **kwargs) self._location = app_settings.OSCAR_INVOICES_DOCUMENTS_ROOT def _clear_cached_properties(self, setting, **kwargs): if setting == 'OSCAR_INVOICES_DOCUMENTS_ROOT': self.__dict__.pop('base_location', None) self.__dict__.pop('location', None) elif setting == 'FILE_UPLOAD_PERMISSIONS': self.__dict__.pop('file_permissions_mode', None) elif setting == 'FILE_UPLOAD_DIRECTORY_PERMISSIONS': self.__dict__.pop('directory_permissions_mode', None) @cached_property def base_location(self): return self._value_or_setting(self._location, app_settings.OSCAR_INVOICES_DOCUMENTS_ROOT)
[docs] def url(self, name): raise ValueError("This file is not accessible via a URL.")