[FIX] Cleanup file path name to work with CSS url("foobar") notations

This essentially removes quotes from the filename, which aren't allowed anyways.
This commit is contained in:
Peter Pfeufer 2025-06-12 10:17:08 +02:00
parent 6477c22308
commit fc51f6bea2
No known key found for this signature in database

View File

@ -25,6 +25,22 @@ class AaManifestStaticFilesStorage(ManifestStaticFilesStorage):
Custom static files storage that ignores missing files. Custom static files storage that ignores missing files.
""" """
@classmethod
def _cleanup_name(cls, name: str) -> str:
"""
Clean up the name by removing quotes.
This method is used to ensure that the name does not contain any quotes,
which can cause issues with file paths.
:param name: The name of the static file.
:type name: str
:return: The cleaned-up name without quotes.
:rtype: str
"""
# Remove quotes from the name
return name.replace('"', "").replace("'", "")
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
""" """
Initialize the static files storage, ignoring missing files. Initialize the static files storage, ignoring missing files.
@ -39,25 +55,27 @@ class AaManifestStaticFilesStorage(ManifestStaticFilesStorage):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
def hashed_name(self, name, *args, **kwargs): def hashed_name(self, name, content=None, filename=None):
""" """
Generate a hashed name for the given static file, ignoring missing files. Generate a hashed name for the given static file, ignoring missing files.
Ignore missing files, e.g. non-existent background image referenced from css. Ignore missing files, e.g. non-existent background image referenced from css.
Returns the original filename if the referenced file doesn't exist. Returns the original filename if the referenced file doesn't exist.
:param name: :param name: The name of the static file to hash.
:type name: :type name: str
:param args: :param content: The content of the static file, if available.
:type args: :type content: bytes | None
:param kwargs: :param filename: The original filename of the static file, if available.
:type kwargs: :type filename: str | None
:return: :return: The hashed name of the static file, or the original name if the file is missing.
:rtype: :rtype: str
""" """
try: try:
return super().hashed_name(name, *args, **kwargs) clean_name = self._cleanup_name(name)
return super().hashed_name(clean_name, content, filename)
except ValueError as e: except ValueError as e:
if settings.DEBUG: if settings.DEBUG:
# In debug mode, we log the missing file message # In debug mode, we log the missing file message