mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-03 14:45:42 +00:00 
			
		
		
		
	Improved loading for custom logo (#3489)
- First check the 'static' directory - Second check the 'media' directory (backwards compatibility) - Third use the default logo
This commit is contained in:
		@@ -12,6 +12,7 @@ from wsgiref.util import FileWrapper
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from django.conf import settings
 | 
					from django.conf import settings
 | 
				
			||||||
from django.contrib.auth.models import Permission
 | 
					from django.contrib.auth.models import Permission
 | 
				
			||||||
 | 
					from django.contrib.staticfiles.storage import StaticFilesStorage
 | 
				
			||||||
from django.core.exceptions import FieldError, ValidationError
 | 
					from django.core.exceptions import FieldError, ValidationError
 | 
				
			||||||
from django.core.files.storage import default_storage
 | 
					from django.core.files.storage import default_storage
 | 
				
			||||||
from django.core.validators import URLValidator
 | 
					from django.core.validators import URLValidator
 | 
				
			||||||
@@ -241,12 +242,22 @@ def getLogoImage(as_file=False, custom=True):
 | 
				
			|||||||
    """Return the path to the logo-file."""
 | 
					    """Return the path to the logo-file."""
 | 
				
			||||||
    if custom and settings.CUSTOM_LOGO:
 | 
					    if custom and settings.CUSTOM_LOGO:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if as_file:
 | 
					        static_storage = StaticFilesStorage()
 | 
				
			||||||
            return f"file://{default_storage.path(settings.CUSTOM_LOGO)}"
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            return default_storage.url(settings.CUSTOM_LOGO)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if static_storage.exists(settings.CUSTOM_LOGO):
 | 
				
			||||||
 | 
					            storage = static_storage
 | 
				
			||||||
 | 
					        elif default_storage.exists(settings.CUSTOM_LOGO):
 | 
				
			||||||
 | 
					            storage = default_storage
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
 | 
					            storage = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if storage is not None:
 | 
				
			||||||
 | 
					            if as_file:
 | 
				
			||||||
 | 
					                return f"file://{storage.path(settings.CUSTOM_LOGO)}"
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                return storage.url(settings.CUSTOM_LOGO)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # If we have got to this point, return the default logo
 | 
				
			||||||
    if as_file:
 | 
					    if as_file:
 | 
				
			||||||
        path = settings.STATIC_ROOT.joinpath('img/inventree.png')
 | 
					        path = settings.STATIC_ROOT.joinpath('img/inventree.png')
 | 
				
			||||||
        return f"file://{path}"
 | 
					        return f"file://{path}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,6 +16,7 @@ import sys
 | 
				
			|||||||
from pathlib import Path
 | 
					from pathlib import Path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import django.conf.locale
 | 
					import django.conf.locale
 | 
				
			||||||
 | 
					from django.contrib.staticfiles.storage import StaticFilesStorage
 | 
				
			||||||
from django.core.files.storage import default_storage
 | 
					from django.core.files.storage import default_storage
 | 
				
			||||||
from django.http import Http404
 | 
					from django.http import Http404
 | 
				
			||||||
from django.utils.translation import gettext_lazy as _
 | 
					from django.utils.translation import gettext_lazy as _
 | 
				
			||||||
@@ -820,9 +821,21 @@ CUSTOMIZE = get_setting('INVENTREE_CUSTOMIZE', 'customize', {})
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
CUSTOM_LOGO = get_setting('INVENTREE_CUSTOM_LOGO', 'customize.logo', None)
 | 
					CUSTOM_LOGO = get_setting('INVENTREE_CUSTOM_LOGO', 'customize.logo', None)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# check that the logo-file exsists in media
 | 
					"""
 | 
				
			||||||
if CUSTOM_LOGO and not default_storage.exists(CUSTOM_LOGO):  # pragma: no cover
 | 
					Check for the existence of a 'custom logo' file:
 | 
				
			||||||
    logger.warning(f"The custom logo file '{CUSTOM_LOGO}' could not be found in the default media storage")
 | 
					- Check the 'static' directory
 | 
				
			||||||
 | 
					- Check the 'media' directory (legacy)
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if CUSTOM_LOGO:
 | 
				
			||||||
 | 
					    static_storage = StaticFilesStorage()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if static_storage.exists(CUSTOM_LOGO):
 | 
				
			||||||
 | 
					        logger.info(f"Loading custom logo from static directory: {CUSTOM_LOGO}")
 | 
				
			||||||
 | 
					    elif default_storage.exists(CUSTOM_LOGO):
 | 
				
			||||||
 | 
					        logger.info(f"Loading custom logo from media directory: {CUSTOM_LOGO}")
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        logger.warning(f"The custom logo file '{CUSTOM_LOGO}' could not be found in the static or media directories")
 | 
				
			||||||
        CUSTOM_LOGO = False
 | 
					        CUSTOM_LOGO = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if DEBUG:
 | 
					if DEBUG:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user