from django import template
from bisect import bisect

register = template.Library()

@register.filter
def fuzzy_time(time):
    """
    Formats a time as fuzzy periods of the day.
    Accepts a datetime.time or datetime.datetime object.
    """
    periods = ["Early-Morning", "Morning", "Mid-day", \
               "Afternoon", "Evening", "Late-Night"]
    breakpoints = [4, 10, 13, 17, 21]
    try:
        return periods[bisect(breakpoints, time.hour)]
    except AttributeError: # Not a datetime object
        return '' #Fail silently
