Skip to content
Snippets Groups Projects
date.py 1.04 KiB
Newer Older
from datetime import date
from typing import List, Tuple
from django.utils import timezone

Tom Teichler's avatar
Tom Teichler committed
from calendarweek import CalendarWeek

def week_weekday_from_date(when: date) -> Tuple[CalendarWeek, int]:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
    """Return a tuple of week and weekday from a given date."""
    return (CalendarWeek.from_date(when), when.weekday())
def week_weekday_to_date(week: CalendarWeek, weekday: int) -> date:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
    """Return a date object for one day in a calendar week."""
def week_period_to_date(week: CalendarWeek, period) -> date:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
    """Return the date of a lesson period in a given week."""
    return period.get_date(week)


def get_weeks_for_year(year: int) -> List[CalendarWeek]:
Nik | Klampfradler's avatar
Nik | Klampfradler committed
    """Generate all weeks for one year."""
    weeks = []

    # Go for all weeks in year and create week list
    current_week = CalendarWeek(year=year, week=1)

    while current_week.year == year:
        weeks.append(current_week)
        current_week += 1

    return weeks


def get_current_year() -> int:
    """Get current year."""
    return timezone.now().year