diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 58f3bf2475686994a32377f574c653f21353cf61..e8e2e1e4282a74c7bf8a5abfd2a6f352ac82037a 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,6 +14,7 @@ Fixed * Signup was forbidden even if it was enabled in settings * Phone numbers were not properly linked and suboptimally formatted on person page +* Favicon upload failed with S3 storage. `2.6`_ - 2022-01-10 ------------------- diff --git a/aleksis/core/apps.py b/aleksis/core/apps.py index d37a1c616953013bec122aa8070ba0d6a389a921..ab264c53a91edac303e8cb574e7d7a56fdca00ac 100644 --- a/aleksis/core/apps.py +++ b/aleksis/core/apps.py @@ -17,7 +17,7 @@ from .registries import ( site_preferences_registry, ) from .util.apps import AppConfig -from .util.core_helpers import get_or_create_favicon, has_person +from .util.core_helpers import get_or_create_favicon, get_site_preferences, has_person from .util.sass_helpers import clean_scss @@ -103,11 +103,15 @@ class CoreConfig(AppConfig): is_favicon = name == "favicon" if new_value: - favicon_id = Favicon.on_site.update_or_create( + # Get file object from preferences instead of using new_value + # to prevent problems with special file storages + file_obj = get_site_preferences()[f"{section}__{name}"] + + favicon = Favicon.on_site.update_or_create( title=name, - defaults={"isFavicon": is_favicon, "faviconImage": new_value}, + defaults={"isFavicon": is_favicon, "faviconImage": file_obj}, )[0] - FaviconImg.objects.filter(faviconFK=favicon_id).delete() + FaviconImg.objects.filter(faviconFK=favicon).delete() else: Favicon.on_site.filter(title=name, isFavicon=is_favicon).delete() if name in settings.DEFAULT_FAVICON_PATHS: