diff options
Diffstat (limited to 'recipe/templatetags')
-rw-r--r-- | recipe/templatetags/__init__.py | 4 | ||||
-rw-r--r-- | recipe/templatetags/ingredientformat.py | 31 |
2 files changed, 35 insertions, 0 deletions
diff --git a/recipe/templatetags/__init__.py b/recipe/templatetags/__init__.py new file mode 100644 index 0000000..9bd6204 --- /dev/null +++ b/recipe/templatetags/__init__.py | |||
@@ -0,0 +1,4 @@ | |||
1 | from django import template | ||
2 | |||
3 | |||
4 | register = template.Library() | ||
diff --git a/recipe/templatetags/ingredientformat.py b/recipe/templatetags/ingredientformat.py new file mode 100644 index 0000000..fa75633 --- /dev/null +++ b/recipe/templatetags/ingredientformat.py | |||
@@ -0,0 +1,31 @@ | |||
1 | from recipe.templatetags import register | ||
2 | from django.template.defaultfilters import stringfilter | ||
3 | |||
4 | |||
5 | @register.filter(name="format_ingredient_quantity") | ||
6 | @stringfilter | ||
7 | def format_ingredient_quantity(value): | ||
8 | fractions = { | ||
9 | 0.125: '1/8', | ||
10 | 0.25 : '1/4', | ||
11 | 0.33 : '1/3', | ||
12 | 0.50 : '1/2', | ||
13 | 0.66 : '2/3', | ||
14 | 0.75 : '3/4', | ||
15 | } | ||
16 | |||
17 | value = float(value) | ||
18 | remainder = round(value % 1, 2) | ||
19 | whole = int(value - remainder) | ||
20 | |||
21 | if whole <= 0: | ||
22 | whole = "" | ||
23 | else: | ||
24 | whole = str(whole) | ||
25 | |||
26 | if remainder <= 0: | ||
27 | remainder = "" | ||
28 | else: | ||
29 | remainder = fractions.get(remainder, str(remainder)) | ||
30 | |||
31 | return "{0} {1}".format(whole, remainder) | ||