Clarify whether name or path is returned in scan directory functions

This commit is contained in:
Julian Stirling 2025-07-01 19:21:56 +01:00
parent 9b78b4620d
commit 254305a7a5
3 changed files with 23 additions and 21 deletions

View file

@ -70,10 +70,10 @@ class ScanDirectoryManager:
"""
return os.path.join(self._base_scan_dir, scan_name, IMG_DIR_NAME)
def get_file_from(
def get_file_path_from(
self, scan_name: str, filename: str, check_exists: bool = False
) -> Optional[str]:
"""Return the file path for the file within a scan directory
"""Return the file full path for the file within a scan directory
If check_exists is True then None will be returned if the file does
not exist.
@ -84,10 +84,10 @@ class ScanDirectoryManager:
return None
return file_path
def get_file_from_img_dir(
def get_file_path_from_img_dir(
self, scan_name: str, filename: str, check_exists: bool = False
) -> Optional[str]:
"""Return the file path for the file within a scan directory
"""Return the full file path for the file within a scan directory
If check_exists is True, None is returned if the file does not exist. If False
then the path is returned anyway
@ -98,15 +98,15 @@ class ScanDirectoryManager:
return None
return file_path
def get_final_stitch(self, scan_name: str) -> Optional[str]:
def get_final_stitch_path(self, scan_name: str) -> Optional[str]:
"""Return the file full path for the final stitch.
If no final stitch is found, return None
"""
stitch_fname = ScanDirectory(scan_name, self.base_dir).get_final_stitch()
stitch_fname = ScanDirectory(scan_name, self.base_dir).get_final_stitch_name()
if stitch_fname is None:
return None
return self.get_file_from_img_dir(scan_name, stitch_fname)
return self.get_file_path_from_img_dir(scan_name, stitch_fname)
@property
def all_scans(self) -> list[str]:
@ -282,7 +282,7 @@ class ScanDirectory:
return scan_images, stitches, dzi_files
def get_final_stitch(self) -> Optional[str]:
def get_final_stitch_name(self) -> Optional[str]:
"""Return the filename for the final stitch (in the images dir)
If no final stitch is found, return None

View file

@ -580,7 +580,7 @@ class SmartScanThing(Thing):
This endpoint allows files to be downloaded from a scan.
"""
preview_path = self._scan_dir_manager.get_file_from_img_dir(
preview_path = self._scan_dir_manager.get_file_path_from_img_dir(
scan_name=scan_name, filename="stitched_thumbnail.jpg", check_exists=True
)
if preview_path is None:
@ -684,7 +684,7 @@ class SmartScanThing(Thing):
Will only return a file ending in suffix STITCH_SUFFIX
Note: when downloading this, the default filename will be `scan_name`.jpeg"""
stitch_path = self._scan_dir_manager.get_final_stitch(scan_name)
stitch_path = self._scan_dir_manager.get_final_stitch_path(scan_name)
if stitch_path is None:
raise HTTPException(404, "File not found")
@ -758,7 +758,7 @@ class SmartScanThing(Thing):
if not self.latest_scan_name:
return None
return self._scan_dir_manager.get_file_from_img_dir(
return self._scan_dir_manager.get_file_path_from_img_dir(
scan_name=self.latest_scan_name, filename="preview.jpg", check_exists=True
)
@ -899,7 +899,7 @@ class SmartScanThing(Thing):
Note that as this is a thing_action it needs the logger passed as
a variable if called from another thing action
"""
json_fpath = self._scan_dir_manager.get_file_from_img_dir(
json_fpath = self._scan_dir_manager.get_file_path_from_img_dir(
scan_name=scan_name, filename=SCAN_DATA_FILENAME
)

View file

@ -122,17 +122,19 @@ def test_basic_directory_operations():
assert scan_dir_manager.img_dir_for(scan_name) == scan_im_dir
# Get the path of a fake file
fake_file = scan_dir_manager.get_file_from(scan_name, "foo.zip")
fake_file = scan_dir_manager.get_file_path_from(scan_name, "foo.zip")
assert fake_file == os.path.join(scan_path, "foo.zip")
# But this is none if we check it exists
fake_file = scan_dir_manager.get_file_from(scan_name, "foo.zip", check_exists=True)
fake_file = scan_dir_manager.get_file_path_from(
scan_name, "foo.zip", check_exists=True
)
assert fake_file is None
# Get the path of another fake file
fake_file = scan_dir_manager.get_file_from_img_dir(scan_name, "bar.img")
fake_file = scan_dir_manager.get_file_path_from_img_dir(scan_name, "bar.img")
assert fake_file == os.path.join(scan_im_dir, "bar.img")
# But this is none if we check it exists
fake_file = scan_dir_manager.get_file_from_img_dir(
fake_file = scan_dir_manager.get_file_path_from_img_dir(
scan_name, "bar.img", check_exists=True
)
assert fake_file is None
@ -268,11 +270,11 @@ def test_get_final_stitch():
_add_fake_image(scan_dir)
# No scans, so None should be returned, from both manager and scan dir
assert scan_dir_manager.get_final_stitch(scan_dir.name) is None
assert scan_dir.get_final_stitch() is None
assert scan_dir_manager.get_final_stitch_path(scan_dir.name) is None
assert scan_dir.get_final_stitch_name() is None
fake_scan_name = "fake_scan_0001_stitched.jpg"
fake_scan_path = scan_dir_manager.get_file_from_img_dir(
fake_scan_path = scan_dir_manager.get_file_path_from_img_dir(
scan_name=scan_dir.name,
filename="fake_scan_0001_stitched.jpg",
check_exists=False,
@ -280,9 +282,9 @@ def test_get_final_stitch():
# Add a fake scan
_add_fake_file(scan_dir, fake_scan_name, in_im_dir=True)
# Manager returns full path
assert scan_dir_manager.get_final_stitch(scan_dir.name) == fake_scan_path
assert scan_dir_manager.get_final_stitch_path(scan_dir.name) == fake_scan_path
# ScanDirectory object returns just the filename
assert scan_dir.get_final_stitch() == fake_scan_name
assert scan_dir.get_final_stitch_name() == fake_scan_name
def test_empty_scan_info():