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():
|
def test_first_author_only():
|
||||||
r = req(title="X", authors="Alice A, Bob B")
|
r = req(title="X", authors="Alice A, Bob B")
|
||||||
assert render_template("{Author}", r) == "Alice A"
|
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",
|
"Title": request.title or "Unknown Title",
|
||||||
"Year": str(request.year) if request.year else "",
|
"Year": str(request.year) if request.year else "",
|
||||||
"Narrator": getattr(request, "narrator", "") or "",
|
"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 "",
|
"Volume": f"{request.volume:02d}" if request.volume is not None else "",
|
||||||
}
|
}
|
||||||
segments = []
|
segments = []
|
||||||
@@ -28,5 +28,7 @@ def render_template(template: str, request) -> str:
|
|||||||
# drop empty parenthesized/dangling bits from missing values, e.g. "Title ()"
|
# drop empty parenthesized/dangling bits from missing values, e.g. "Title ()"
|
||||||
seg = re.sub(r"\(\s*\)", "", seg)
|
seg = re.sub(r"\(\s*\)", "", seg)
|
||||||
seg = re.sub(r"(-|–)\s*$", "", seg).strip()
|
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))
|
segments.append(sanitize(seg))
|
||||||
return "/".join(segments)
|
return "/".join(segments) or "Unknown"
|
||||||
|
|||||||
Reference in New Issue
Block a user