From e2100ccd873fdb4987370a3b217dc48f88ca07dd Mon Sep 17 00:00:00 2001 From: Rhet Turnbull Date: Fri, 8 Dec 2023 22:36:08 -0800 Subject: [PATCH] Fixes for #1318, #1319 --- osxphotos/phototemplate.py | 4 +++- tests/test_template.py | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/osxphotos/phototemplate.py b/osxphotos/phototemplate.py index 8fe7793be..5e2798499 100644 --- a/osxphotos/phototemplate.py +++ b/osxphotos/phototemplate.py @@ -621,6 +621,8 @@ def _render_template_string( raise SyntaxError( "var must have a subfield and value in form {var:subfield,value}" ) + # strip empty string from default, #1318, #512 + default = [d for d in default if d != ""] self.variables[subfield] = default vals = [] else: @@ -740,7 +742,7 @@ def comparison_test(test_function): pre = ts.pre or "" post = ts.post or "" - rendered = [pre + str(val) + post for val in vals] + rendered = [pre + str(val) + post for val in vals] if vals else [pre + post] results_new = [] for ren in rendered: for res in results: diff --git a/tests/test_template.py b/tests/test_template.py index f1737b8f9..2abf84801 100644 --- a/tests/test_template.py +++ b/tests/test_template.py @@ -1406,3 +1406,24 @@ def test_float_concatenation(photosdb): rendered, _ = photo.render_template("{,+photo.location}") assert len(rendered) == 1 assert rendered[0] == f"{photo.location[0]},{photo.location[1]}" + + +def test_var_eval(photosdb): + """Test {%varname?True,False} #1318""" + photo = [p for p in photosdb.photos() if not p.title][0] + template = "{var:test,{title,}}{%test?True,False}" + rendered, _ = photo.render_template(template) + assert rendered[0] == "False" + + photo = [p for p in photosdb.photos() if p.title][0] + template = "{var:test,{title,}}{%test?True,False}" + rendered, _ = photo.render_template(template) + assert rendered[0] == "True" + + +def test_null_template(photosdb): + """Test that template with null value renders correctly, #1319""" + photo = [p for p in photosdb.photos() if not p.title][0] + template = "{var:test,{title,}}Foo-{%test,}-Bar" + rendered, _ = photo.render_template(template) + assert rendered[0] == "Foo--Bar"