from recipe.templatetags import register from django.template.defaultfilters import stringfilter @register.filter(name="format_ingredient_quantity") @stringfilter def format_ingredient_quantity(value): fractions = { 0.125: '1/8', 0.25 : '1/4', 0.33 : '1/3', 0.50 : '1/2', 0.66 : '2/3', 0.75 : '3/4', } value = float(value) remainder = round(value % 1, 2) whole = int(value - remainder) if whole <= 0: whole = "" else: whole = str(whole) if remainder <= 0: remainder = "" else: remainder = fractions.get(remainder, str(remainder)) return "{0} {1}".format(whole, remainder)