fix(schema): do nothing when there is no series
This commit is contained in:
@@ -31,3 +31,16 @@ def test_comic_template():
|
||||
def test_first_author_only():
|
||||
r = req(title="X", authors="Alice A, Bob B")
|
||||
assert render_template("{Author}", r) == "Alice A"
|
||||
|
||||
|
||||
def test_empty_series_level_is_dropped():
|
||||
r = req(title="Der Ickabog", authors="J.K. Rowling")
|
||||
assert render_template("{Author}/{Series}/{Title} ({Narrator})", r) == "J.K. Rowling/Der Ickabog"
|
||||
|
||||
|
||||
def test_series_level_kept_when_set():
|
||||
r = req(title="Harry Potter und der Feuerkelch", authors="J.K. Rowling",
|
||||
series="Harry Potter")
|
||||
r.narrator = "Rufus Beck"
|
||||
assert render_template("{Author}/{Series}/{Title} ({Narrator})", r) == \
|
||||
"J.K. Rowling/Harry Potter/Harry Potter und der Feuerkelch (Rufus Beck)"
|
||||
|
||||
+4
-2
@@ -18,7 +18,7 @@ def render_template(template: str, request) -> str:
|
||||
"Title": request.title or "Unknown Title",
|
||||
"Year": str(request.year) if request.year else "",
|
||||
"Narrator": getattr(request, "narrator", "") or "",
|
||||
"Series": request.series or request.title or "Unknown Series",
|
||||
"Series": request.series or "",
|
||||
"Volume": f"{request.volume:02d}" if request.volume is not None else "",
|
||||
}
|
||||
segments = []
|
||||
@@ -28,5 +28,7 @@ def render_template(template: str, request) -> str:
|
||||
# drop empty parenthesized/dangling bits from missing values, e.g. "Title ()"
|
||||
seg = re.sub(r"\(\s*\)", "", seg)
|
||||
seg = re.sub(r"(-|–)\s*$", "", seg).strip()
|
||||
if not seg:
|
||||
continue # drop path levels that are empty (e.g. {Series} without a series)
|
||||
segments.append(sanitize(seg))
|
||||
return "/".join(segments)
|
||||
return "/".join(segments) or "Unknown"
|
||||
|
||||
Reference in New Issue
Block a user