Skip to content

Commit

Permalink
Make path patching more robust (#1316)
Browse files Browse the repository at this point in the history
  • Loading branch information
bartfeenstra authored Feb 25, 2024
1 parent 6f33dbd commit a436f5b
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 14 deletions.
4 changes: 2 additions & 2 deletions betty/app/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from betty.cache import FileCache
from betty.config import Configurable, FileBasedConfiguration
from betty.dispatch import Dispatcher
from betty.fs import FileSystem, ASSETS_DIRECTORY_PATH, HOME_DIRECTORY_PATH
from betty.fs import FileSystem, ASSETS_DIRECTORY_PATH
from betty.locale import LocalizerRepository, get_data, DEFAULT_LOCALE, Localizer, Str
from betty.model import Entity, EntityTypeProvider
from betty.model.event_type import EventType, EventTypeProvider, Birth, Baptism, Adoption, Death, Funeral, Cremation, \
Expand All @@ -36,7 +36,7 @@
from betty.serve import Server
from betty.url import StaticUrlGenerator, LocalizedUrlGenerator

CONFIGURATION_DIRECTORY_PATH = HOME_DIRECTORY_PATH / 'configuration'
CONFIGURATION_DIRECTORY_PATH = fs.HOME_DIRECTORY_PATH / 'configuration'


class _AppExtensions(ListExtensions):
Expand Down
6 changes: 3 additions & 3 deletions betty/jinja2/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
from markupsafe import Markup, escape
from pdf2image.pdf2image import convert_from_path

from betty import _resizeimage
from betty.fs import hashfile, CACHE_DIRECTORY_PATH
from betty import _resizeimage, fs
from betty.fs import hashfile
from betty.functools import walk
from betty.locale import negotiate_localizeds, Localized, Datey, negotiate_locale, Localey, get_data, Localizable
from betty.model import get_entity_type_name
Expand Down Expand Up @@ -259,7 +259,7 @@ async def filter_image(

job_id = f'filter_image:{file.id}:{width or ""}:{height or ""}'
if job_context is None or job_context.claim(job_id):
cache_directory_path = CACHE_DIRECTORY_PATH / 'image'
cache_directory_path = fs.CACHE_DIRECTORY_PATH / 'image'
await task_callable(file, cache_directory_path, file_directory_path, destination_name, width, height)

destination_public_path = f'/file/{quote(destination_name)}'
Expand Down
17 changes: 8 additions & 9 deletions betty/tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,19 +25,18 @@

def patch_cache(f: Callable[P, Awaitable[T]]) -> Callable[P, Awaitable[T]]:
"""
Patch Betty's cache with a temporary directory.
Patch Betty's default global file cache with a temporary directory.
"""
@functools.wraps(f)
async def _patch_cache(*args: P.args, **kwargs: P.kwargs) -> T:
original_cache_directory_path = fs.CACHE_DIRECTORY_PATH
cache_directory = TemporaryDirectory()
fs.CACHE_DIRECTORY_PATH = Path(await cache_directory.__aenter__())
try:
return await f(*args, **kwargs)

finally:
fs.CACHE_DIRECTORY_PATH = original_cache_directory_path
await cache_directory.__aexit__(None, None, None)
async with TemporaryDirectory() as cache_directory:
fs.CACHE_DIRECTORY_PATH = Path(cache_directory)
try:
return await f(*args, **kwargs)

finally:
fs.CACHE_DIRECTORY_PATH = original_cache_directory_path

return _patch_cache

Expand Down

0 comments on commit a436f5b

Please sign in to comment.