diff --git a/wagtail/wagtailimages/checks.py b/wagtail/wagtailimages/checks.py index 9c2235eb5..bf785682d 100644 --- a/wagtail/wagtailimages/checks.py +++ b/wagtail/wagtailimages/checks.py @@ -1,52 +1,37 @@ import os from django.core.checks import register, Warning +from django.utils.lru_cache import lru_cache from willow.image import Image -_has_jpeg_support = None -_has_png_support = None - - +@lru_cache() def has_jpeg_support(): - global _has_jpeg_support - - if _has_jpeg_support is None: - wagtail_jpg = os.path.join(os.path.dirname(__file__), 'check_files', 'wagtail.jpg') - succeeded = True - f = open(wagtail_jpg, 'rb') + wagtail_jpg = os.path.join(os.path.dirname(__file__), 'check_files', 'wagtail.jpg') + succeeded = True + with open(wagtail_jpg, 'rb') as f: try: Image.open(f) except (IOError, Image.LoaderError): succeeded = False - finally: - f.close() - _has_jpeg_support = succeeded - - return _has_jpeg_support + return succeeded +@lru_cache() def has_png_support(): - global _has_png_support - - if _has_png_support is None: - wagtail_png = os.path.join(os.path.dirname(__file__), 'check_files', 'wagtail.png') - succeeded = True - f = open(wagtail_png, 'rb') + wagtail_png = os.path.join(os.path.dirname(__file__), 'check_files', 'wagtail.png') + succeeded = True + with open(wagtail_png, 'rb') as f: try: Image.open(f) except (IOError, Image.LoaderError): succeeded = False - finally: - f.close() - _has_png_support = succeeded - - return _has_png_support + return succeeded @register()