Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ in `STORAGES['sass_processor']['OPTIONS']` [Django >= 4.2.*] or `SASS_PROCESSOR_
```python
# For Django >= 4.2.*
STORAGES['sass_processor'] = {
'BACKEND': 'django.core.files.storage.FileSystemStorage',
'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage',
'OPTIONS': {
'location': '/srv/media/generated',
'base_url': 'https://media.myapp.example.com/generated'
Expand Down
16 changes: 10 additions & 6 deletions sass_processor/storage.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import copy

from django import VERSION
from django.conf import settings
from django.contrib.staticfiles.finders import get_finders
Expand All @@ -10,23 +12,25 @@ class SassFileStorage(LazyObject):
def _setup(self):
version_parts = VERSION[:2]
if version_parts[0] > 4 or (version_parts[0] == 4 and version_parts[1] >= 2):
staticfiles_storage_backend = settings.STORAGES.get("staticfiles", {}).get("BACKEND")
sass_processor_storage = settings.STORAGES.get("sass_processor", {})
staticfiles_storage_backend = settings.STORAGES.get('staticfiles', {}).get('BACKEND')
sass_processor_storage = settings.STORAGES.get('sass_processor', {})

storage_path = sass_processor_storage.get("BACKEND") or staticfiles_storage_backend
storage_options = sass_processor_storage.get("OPTIONS") or {}
storage_path = sass_processor_storage.get('BACKEND') or staticfiles_storage_backend
storage_options = copy.deepcopy(sass_processor_storage.get('OPTIONS') or {})
storage_class = import_string(storage_path)

storage_options['ROOT'] = sass_processor_storage.get('ROOT') or settings.STATIC_ROOT
else:
from django.core.files.storage import get_storage_class
staticfiles_storage_backend = settings.STATICFILES_STORAGE
storage_path = getattr(settings, 'SASS_PROCESSOR_STORAGE', staticfiles_storage_backend)
storage_options = getattr(settings, 'SASS_PROCESSOR_STORAGE_OPTIONS', {})
storage_class = get_storage_class(storage_path)

storage_options["ROOT"] = getattr(settings, 'SASS_PROCESSOR_ROOT', settings.STATIC_ROOT)
storage_options['ROOT'] = getattr(settings, 'SASS_PROCESSOR_ROOT', settings.STATIC_ROOT)

if storage_path == staticfiles_storage_backend and issubclass(storage_class, FileSystemStorage):
storage_options['location'] = storage_options.pop("ROOT", None) or settings.STATIC_ROOT
storage_options['location'] = storage_options.pop('ROOT', None) or settings.STATIC_ROOT
storage_options['base_url'] = settings.STATIC_URL

self._wrapped = storage_class(**storage_options)
Expand Down