| 123456789101112131415161718192021222324 |
- from datetime import datetime
- from dateutil.relativedelta import relativedelta as reldelta
- from django.utils.timezone import timedelta as delta
- CALENDAR_FREQUENCIES = {
- "daily": delta(days=1),
- "weekly": reldelta(weeks=1),
- "monthly": reldelta(months=1),
- "yearly": reldelta(years=1)
- }
- def get_next_calendar_date(date: datetime, frequency: str):
- base_date: datetime = date.replace(hour=3, minute=0, second=0, microsecond=0)
- if frequency == "daily":
- return base_date + delta(days=1)
- if frequency == "weekly":
- days_ahead = -date.weekday() + 7 # Lunes
- return base_date + delta(days=days_ahead)
- if frequency == "monthly":
- return (base_date.replace(day=1) + reldelta(months=1))
- if frequency == "yearly":
- return (base_date.replace(day=1, month=1) + reldelta(years=1))
- return None
|