mirror of
https://github.com/enpaul/kodak.git
synced 2024-11-23 15:07:13 +00:00
Fix link name generation logic to support nested directories
This commit is contained in:
parent
dc81600d0c
commit
bbb7dec2b3
@ -29,22 +29,24 @@ class ImageRecord(KodakModel):
|
|||||||
:param path: Full path to the image file to process. The file path provided is expected to
|
:param path: Full path to the image file to process. The file path provided is expected to
|
||||||
already be absolute, with all symlinks and aliases resolved.
|
already be absolute, with all symlinks and aliases resolved.
|
||||||
"""
|
"""
|
||||||
name = path.stem
|
|
||||||
extension = path.suffix
|
extension = path.suffix
|
||||||
|
|
||||||
for item in constants.ImageFormat:
|
for item in constants.ImageFormat:
|
||||||
if extension.lower()[1:] in item.value:
|
if extension.replace(".", "") in item.value:
|
||||||
format_ = item
|
format_ = item
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
raise RuntimeError
|
raise RuntimeError
|
||||||
|
|
||||||
name = name.replace(str(config.source_dir), "").replace(
|
name = str(path.relative_to(config.source_dir)).replace(
|
||||||
os.sep, constants.IMAGE_PATH_NAME_SEPARATOR
|
os.sep, constants.IMAGE_PATH_NAME_SEPARATOR
|
||||||
)
|
)[: -len(extension)]
|
||||||
|
|
||||||
return cls(
|
return cls(
|
||||||
name=name, source=path, format_=format_, checksum=Checksum.from_path(path)
|
name=name,
|
||||||
|
source=path.relative_to(config.source_dir),
|
||||||
|
format_=format_,
|
||||||
|
checksum=Checksum.from_path(path),
|
||||||
)
|
)
|
||||||
|
|
||||||
def create_link(self, config: configuration.KodakConfig) -> Path:
|
def create_link(self, config: configuration.KodakConfig) -> Path:
|
||||||
@ -56,7 +58,7 @@ class ImageRecord(KodakModel):
|
|||||||
Path(config.content_dir, self.name).mkdir(exist_ok=True)
|
Path(config.content_dir, self.name).mkdir(exist_ok=True)
|
||||||
link = Path(config.content_dir, self.name, "original")
|
link = Path(config.content_dir, self.name, "original")
|
||||||
try:
|
try:
|
||||||
link.symlink_to(self.source)
|
link.symlink_to(config.source_dir / self.source)
|
||||||
except FileExistsError:
|
except FileExistsError:
|
||||||
pass
|
pass
|
||||||
return link
|
return link
|
||||||
|
@ -19,6 +19,9 @@ class Image(KodakResource):
|
|||||||
with database.interface.atomic():
|
with database.interface.atomic():
|
||||||
image = database.ImageRecord.get(database.ImageRecord.name == image_name)
|
image = database.ImageRecord.get(database.ImageRecord.name == image_name)
|
||||||
|
|
||||||
|
# Note that this sends the original source file directly, rather than the symlink named
|
||||||
|
# "original". This is because flask will serve the symlink file itself, not the linked file,
|
||||||
|
# to the browser.
|
||||||
resp = flask.send_file(
|
resp = flask.send_file(
|
||||||
image.source,
|
image.source,
|
||||||
cache_timeout=int(datetime.timedelta(days=365).total_seconds()),
|
cache_timeout=int(datetime.timedelta(days=365).total_seconds()),
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import shutil
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List
|
from typing import List
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
@ -117,11 +118,14 @@ def build(config: Optional[configuration.KodakConfig] = None) -> None:
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.info(f"Removing source links to {len(removed_images)} removed image files")
|
logger.info(
|
||||||
|
f"Removing generated assets for {len(removed_images)} removed image files"
|
||||||
|
)
|
||||||
|
|
||||||
for image in removed_images:
|
for image in removed_images:
|
||||||
logger.debug(f"Removing link to removed source image {image.source}")
|
content = config.content_dir / image.name
|
||||||
image.remove_link(config)
|
logger.debug(f"Removing content directory {content}")
|
||||||
|
shutil.rmtree(str(content))
|
||||||
|
|
||||||
logger.info("Processing source links")
|
logger.info("Processing source links")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user