diff --git a/biscuit/apps/chronos/util.py b/biscuit/apps/chronos/util.py index f3988f425a70e4b59f9196dad58966c9175e6dcd..7ce3b0da8bd7f617819a86839d68e3e7bb7c58b6 100644 --- a/biscuit/apps/chronos/util.py +++ b/biscuit/apps/chronos/util.py @@ -28,6 +28,21 @@ class CalendarWeek: return cls().week + @classmethod + def weeks_within(cls, start: date, end: date) -> Sequence[CalendarWeek]: + """ Get all calendar weeks within a date range. """ + + if start > end: + raise ValueError('End date must be after start date.') + + current = start + weeks = [] + while current < end: + weeks.append(cls.from_date(current)) + current += timedelta(days=7) + + return weeks + def __post_init__(self) -> None: today = date.today()