Beispiel #1
0
def get_daychunks(day):
    """
    Given a DateTimeTZRange day returns a list of "daychunks" which are
    DateTimeTZRanges of length settings.SPEAKER_AVAILABILITY_DAYCHUNK_HOURS
    starting from day.lower. If day.lower is midnight and day.upper is 10 AM and
    settings.SPEAKER_AVAILABILITY_DAYCHUNK_HOURS=2 then a list of 5 daychunks
    would be returned.
    """
    chunks = []
    daychunk = DateTimeTZRange(
        day.lower,
        day.lower +
        timedelta(hours=settings.SPEAKER_AVAILABILITY_DAYCHUNK_HOURS),
    )
    i = 0
    while daychunk.upper < day.upper:
        # append this chunk
        chunks.append(daychunk)
        # increase our counter
        i += 1
        daychunk = DateTimeTZRange(
            day.lower +
            timedelta(hours=settings.SPEAKER_AVAILABILITY_DAYCHUNK_HOURS * i),
            day.lower +
            timedelta(hours=settings.SPEAKER_AVAILABILITY_DAYCHUNK_HOURS *
                      (i + 1)),
        )

    # cap the final chunk to be equal to the end of the day
    if daychunk.upper > day.upper:
        daychunk.upper = day.upper

    # append the final chunk and return
    chunks.append(daychunk)
    return chunks