mirror of
https://github.com/ae-utbm/sith.git
synced 2025-07-10 03:49:24 +00:00
better scss
This commit is contained in:
@ -22,7 +22,6 @@
|
||||
#
|
||||
#
|
||||
|
||||
import os
|
||||
from collections import OrderedDict
|
||||
|
||||
from django.conf import settings
|
||||
@ -37,7 +36,7 @@ class ScssFinder(FileSystemFinder):
|
||||
|
||||
def __init__(self, apps=None, *args, **kwargs):
|
||||
location = settings.STATIC_ROOT
|
||||
if not os.path.isdir(location):
|
||||
if not location.is_dir():
|
||||
return
|
||||
self.locations = [("", location)]
|
||||
self.storages = OrderedDict()
|
||||
|
@ -21,61 +21,35 @@
|
||||
# Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
#
|
||||
|
||||
import os
|
||||
from urllib.parse import urljoin
|
||||
import functools
|
||||
from pathlib import Path
|
||||
|
||||
import sass
|
||||
from django.conf import settings
|
||||
from django.core.files.base import ContentFile
|
||||
from django.templatetags.static import static
|
||||
from django.utils.encoding import force_bytes, iri_to_uri
|
||||
from django_jinja.builtins.filters import static
|
||||
|
||||
from core.scss.storage import ScssFileStorage, find_file
|
||||
|
||||
|
||||
class ScssProcessor(object):
|
||||
"""If DEBUG mode enabled : compile the scss file
|
||||
Else : give the path of the corresponding css supposed to already be compiled
|
||||
Don't forget to use compilestatics to compile scss for production.
|
||||
"""
|
||||
@functools.cache
|
||||
def _scss_storage():
|
||||
return ScssFileStorage()
|
||||
|
||||
prefix = iri_to_uri(getattr(settings, "STATIC_URL", "/static/"))
|
||||
storage = ScssFileStorage()
|
||||
scss_extensions = [".scss"]
|
||||
|
||||
def __init__(self, path=None):
|
||||
self.path = path
|
||||
|
||||
def _convert_scss(self):
|
||||
basename, ext = os.path.splitext(self.path)
|
||||
css_filename = self.path.replace(".scss", ".css")
|
||||
url = urljoin(self.prefix, css_filename)
|
||||
|
||||
if not settings.DEBUG:
|
||||
return url
|
||||
|
||||
if ext not in self.scss_extensions:
|
||||
return static(self.path)
|
||||
|
||||
# Compilation on the fly
|
||||
def process_scss_path(path: Path):
|
||||
css_path = path.with_suffix(".css")
|
||||
if settings.DEBUG:
|
||||
compile_args = {
|
||||
"filename": find_file(self.path),
|
||||
"filename": find_file(path),
|
||||
"include_paths": settings.SASS_INCLUDE_FOLDERS,
|
||||
}
|
||||
if settings.SASS_PRECISION:
|
||||
compile_args["precision"] = settings.SASS_PRECISION
|
||||
content = sass.compile(**compile_args)
|
||||
content = force_bytes(content)
|
||||
|
||||
if self.storage.exists(css_filename):
|
||||
self.storage.delete(css_filename)
|
||||
self.storage.save(css_filename, ContentFile(content))
|
||||
|
||||
return url
|
||||
|
||||
def get_converted_scss(self):
|
||||
if self.path:
|
||||
return self._convert_scss()
|
||||
else:
|
||||
return ""
|
||||
storage = _scss_storage()
|
||||
if storage.exists(css_path):
|
||||
storage.delete(css_path)
|
||||
storage.save(css_path, ContentFile(content))
|
||||
return static(css_path)
|
||||
|
Reference in New Issue
Block a user