Raspored: naziv dana = sljedeće nailazeće pojavljivanje (zbog smjena)

Bare naziv dana (npr. "utorak") sada znači danas ako je taj dan, inače ovu
sedmicu ako još nije prošao, a sljedeću sedmicu ako je prošao — bitno jer smjena
zavisi od sedmice. "sljedeći/naredni/idući <dan>" gura u narednu kalendarsku sedmicu.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LzKpYaEsuWDevuNnvSjcFW
This commit is contained in:
idriz
2026-09-13 08:27:04 +02:00
parent a2d7adc8c7
commit ce7fa2bba0

View File

@@ -79,10 +79,20 @@ def _parse_kada(s: str) -> tuple[dt.date, str]:
except ValueError:
pass
wd = {"ponedjeljak": 0, "utorak": 1, "srijeda": 2, "cetvrtak": 3, "petak": 4, "subota": 5, "nedjelja": 6, "nedelja": 6}
if sn in wd:
monday = today - dt.timedelta(days=today.weekday())
d = monday + dt.timedelta(days=wd[sn])
return d, _date_fraza(d)
# naziv dana -> sljedeće NAILAZEĆE pojavljivanje (danas ako je taj dan; inače
# ova sedmica ako još nije prošao, a sljedeća ako jeste — bitno zbog smjena).
# "sljedeći/naredni/idući <dan>" uvijek gura u narednu sedmicu.
qual = any(k in sn for k in ("sljedec", "naredn", "iduc"))
for wname, wi in wd.items():
if sn.endswith(wname):
if qual:
# dan u narednoj kalendarskoj sedmici
next_monday = today - dt.timedelta(days=today.weekday()) + dt.timedelta(days=7)
d = next_monday + dt.timedelta(days=wi)
else:
# sljedeće nailazeće pojavljivanje (danas ako je taj dan)
d = today + dt.timedelta(days=(wi - today.weekday()) % 7)
return d, _date_fraza(d)
return today, "danas"