Added RenderOptions to {function} template, #496
This commit is contained in:
@@ -77,11 +77,12 @@ def place_folder(photo: osxphotos.PhotoInfo) -> str:
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
def photos_folders(photo: osxphotos.PhotoInfo, **kwargs) -> Union[List, str]:
|
def photos_folders(photo: osxphotos.PhotoInfo, options: osxphotos.phototemplate.RenderOptions, **kwargs) -> Union[List, str]:
|
||||||
"""template function for use with --directory to export photos in a folder structure similar to Photos
|
"""template function for use with --directory to export photos in a folder structure similar to Photos
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
photo: osxphotos.PhotoInfo object
|
photo: osxphotos.PhotoInfo object
|
||||||
|
options: RenderOptions instance
|
||||||
**kwargs: not currently used, placeholder to keep functions compatible with possible changes to {function}
|
**kwargs: not currently used, placeholder to keep functions compatible with possible changes to {function}
|
||||||
|
|
||||||
Returns: list of directories for each photo
|
Returns: list of directories for each photo
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
""" version info """
|
""" version info """
|
||||||
|
|
||||||
__version__ = "0.42.62"
|
__version__ = "0.42.63"
|
||||||
|
|||||||
@@ -2841,7 +2841,7 @@ def export_photo_with_template(
|
|||||||
results.missing.append(str(pathlib.Path(dest_path) / filename))
|
results.missing.append(str(pathlib.Path(dest_path) / filename))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
render_options = RenderOptions(export_dir=export_dir)
|
render_options = RenderOptions(export_dir=export_dir, dest_path=dest_path)
|
||||||
|
|
||||||
tries = 0
|
tries = 0
|
||||||
while tries <= retry:
|
while tries <= retry:
|
||||||
|
|||||||
@@ -250,6 +250,7 @@ class RenderOptions:
|
|||||||
strip: if True, strips leading/trailing whitespace from rendered templates
|
strip: if True, strips leading/trailing whitespace from rendered templates
|
||||||
edited_version: set to True if you want {edited_version} to resolve to True (e.g. exporting edited version of photo)
|
edited_version: set to True if you want {edited_version} to resolve to True (e.g. exporting edited version of photo)
|
||||||
export_dir: set to the export directory if you want to evalute {export_dir} template
|
export_dir: set to the export directory if you want to evalute {export_dir} template
|
||||||
|
dest_path: set to the destination path of the photo (for use by {function} template), only valid with --filename
|
||||||
filepath: set to value for filepath of the exported photo if you want to evaluate {filepath} template
|
filepath: set to value for filepath of the exported photo if you want to evaluate {filepath} template
|
||||||
quote: quote path templates for execution in the shell
|
quote: quote path templates for execution in the shell
|
||||||
"""
|
"""
|
||||||
@@ -263,6 +264,7 @@ class RenderOptions:
|
|||||||
strip: bool = False
|
strip: bool = False
|
||||||
edited_version: bool = False
|
edited_version: bool = False
|
||||||
export_dir: Optional[str] = None
|
export_dir: Optional[str] = None
|
||||||
|
dest_path: Optional[str] = None
|
||||||
filepath: Optional[str] = None
|
filepath: Optional[str] = None
|
||||||
quote: bool = False
|
quote: bool = False
|
||||||
|
|
||||||
@@ -354,8 +356,10 @@ class PhotoTemplate:
|
|||||||
self.dirname = options.dirname
|
self.dirname = options.dirname
|
||||||
self.strip = options.strip
|
self.strip = options.strip
|
||||||
self.export_dir = options.export_dir
|
self.export_dir = options.export_dir
|
||||||
|
self.dest_path = options.dest_path
|
||||||
self.filepath = options.filepath
|
self.filepath = options.filepath
|
||||||
self.quote = options.quote
|
self.quote = options.quote
|
||||||
|
self.options = options
|
||||||
|
|
||||||
try:
|
try:
|
||||||
model = self.parser.parse(template)
|
model = self.parser.parse(template)
|
||||||
@@ -1182,7 +1186,7 @@ class PhotoTemplate:
|
|||||||
raise ValueError(f"'{filename}' does not appear to be a file")
|
raise ValueError(f"'{filename}' does not appear to be a file")
|
||||||
|
|
||||||
template_func = load_function(filename_validated, funcname)
|
template_func = load_function(filename_validated, funcname)
|
||||||
values = template_func(self.photo)
|
values = template_func(self.photo, options=self.options)
|
||||||
|
|
||||||
if not isinstance(values, (str, list)):
|
if not isinstance(values, (str, list)):
|
||||||
raise TypeError(
|
raise TypeError(
|
||||||
|
|||||||
Reference in New Issue
Block a user