diff options
author | Mike Crute <mcrute@gmail.com> | 2013-04-20 10:56:32 -0400 |
---|---|---|
committer | Mike Crute <mcrute@gmail.com> | 2013-04-20 11:00:35 -0400 |
commit | 3aa22ec4cd4e8c80a6b3269d86a00912542462dd (patch) | |
tree | 10d3f7a05538bf9e7605c7d1677887f0fbedbf1b /greenbox | |
parent | c5f8644eb1f542a7a6e118955a69d843fd61a24e (diff) | |
download | greenbox-3aa22ec4cd4e8c80a6b3269d86a00912542462dd.tar.bz2 greenbox-3aa22ec4cd4e8c80a6b3269d86a00912542462dd.tar.xz greenbox-3aa22ec4cd4e8c80a6b3269d86a00912542462dd.zip |
Move recipe to the top level
Diffstat (limited to 'greenbox')
-rw-r--r-- | greenbox/recipe/__init__.py | 0 | ||||
-rw-r--r-- | greenbox/recipe/models.py | 90 | ||||
-rw-r--r-- | greenbox/recipe/templatetags/__init__.py | 4 | ||||
-rw-r--r-- | greenbox/recipe/templatetags/ingredientformat.py | 31 | ||||
-rw-r--r-- | greenbox/recipe/tests.py | 23 | ||||
-rw-r--r-- | greenbox/recipe/urls.py | 7 | ||||
-rw-r--r-- | greenbox/recipe/views.py | 11 |
7 files changed, 0 insertions, 166 deletions
diff --git a/greenbox/recipe/__init__.py b/greenbox/recipe/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/greenbox/recipe/__init__.py +++ /dev/null | |||
diff --git a/greenbox/recipe/models.py b/greenbox/recipe/models.py deleted file mode 100644 index 8463447..0000000 --- a/greenbox/recipe/models.py +++ /dev/null | |||
@@ -1,90 +0,0 @@ | |||
1 | from django.db import models | ||
2 | from django.contrib import admin | ||
3 | from django.db.models import fields | ||
4 | |||
5 | |||
6 | class Unit(models.Model): | ||
7 | |||
8 | class Meta: | ||
9 | ordering = ('name',) | ||
10 | |||
11 | name = fields.CharField(max_length=100) | ||
12 | abbreviation = fields.CharField(max_length=10, blank=True, null=True) | ||
13 | |||
14 | def __unicode__(self): | ||
15 | return "{0} ({1})".format(self.name, self.abbreviation) | ||
16 | |||
17 | |||
18 | class Recipe(models.Model): | ||
19 | |||
20 | class Meta: | ||
21 | ordering = ('title',) | ||
22 | |||
23 | title = fields.CharField(max_length=100) | ||
24 | slug = fields.SlugField(max_length=150) | ||
25 | description = fields.TextField(blank=True, null=True) | ||
26 | servings = fields.IntegerField(blank=True, null=True) | ||
27 | instructions = fields.TextField() | ||
28 | oven_temp = fields.IntegerField(blank=True, null=True) | ||
29 | cook_time = fields.IntegerField(blank=True, null=True) | ||
30 | prep_time = fields.IntegerField(blank=True, null=True) | ||
31 | |||
32 | |||
33 | def __unicode__(self): | ||
34 | return self.title | ||
35 | |||
36 | |||
37 | class Ingredient(models.Model): | ||
38 | |||
39 | class Meta: | ||
40 | ordering = ('name',) | ||
41 | |||
42 | name = fields.CharField(max_length=100, unique=True) | ||
43 | |||
44 | def __unicode__(self): | ||
45 | return self.name | ||
46 | |||
47 | |||
48 | class RecipeIngredient(models.Model): | ||
49 | |||
50 | ingredient = models.ForeignKey(Ingredient) | ||
51 | units = models.ForeignKey(Unit) | ||
52 | quantity = fields.FloatField() | ||
53 | recipe = models.ForeignKey(Recipe) | ||
54 | |||
55 | def __unicode__(self): | ||
56 | return "{0} in {1}".format(self.ingredient.name, self.recipe.title) | ||
57 | |||
58 | |||
59 | class UnitAdmin(admin.ModelAdmin): | ||
60 | |||
61 | list_display = ('name', 'abbreviation') | ||
62 | ordering = ('name',) | ||
63 | |||
64 | |||
65 | class IngredientInline(admin.TabularInline): | ||
66 | |||
67 | model = RecipeIngredient | ||
68 | extra = 12 | ||
69 | |||
70 | |||
71 | class RecipeAdmin(admin.ModelAdmin): | ||
72 | |||
73 | list_display = ('title',) | ||
74 | inlines = (IngredientInline,) | ||
75 | search_fields = ('title',) | ||
76 | prepopulated_fields = { "slug": ("title",) } | ||
77 | |||
78 | |||
79 | class IngredientAdmin(admin.ModelAdmin): | ||
80 | |||
81 | list_display = ('name',) | ||
82 | search_fields = ('name',) | ||
83 | |||
84 | |||
85 | try: | ||
86 | admin.site.register(Unit, UnitAdmin) | ||
87 | admin.site.register(Ingredient, IngredientAdmin) | ||
88 | admin.site.register(Recipe, RecipeAdmin) | ||
89 | except admin.sites.AlreadyRegistered: | ||
90 | pass | ||
diff --git a/greenbox/recipe/templatetags/__init__.py b/greenbox/recipe/templatetags/__init__.py deleted file mode 100644 index 9bd6204..0000000 --- a/greenbox/recipe/templatetags/__init__.py +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | from django import template | ||
2 | |||
3 | |||
4 | register = template.Library() | ||
diff --git a/greenbox/recipe/templatetags/ingredientformat.py b/greenbox/recipe/templatetags/ingredientformat.py deleted file mode 100644 index fa75633..0000000 --- a/greenbox/recipe/templatetags/ingredientformat.py +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
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) | ||
diff --git a/greenbox/recipe/tests.py b/greenbox/recipe/tests.py deleted file mode 100644 index 2247054..0000000 --- a/greenbox/recipe/tests.py +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | """ | ||
2 | This file demonstrates two different styles of tests (one doctest and one | ||
3 | unittest). These will both pass when you run "manage.py test". | ||
4 | |||
5 | Replace these with more appropriate tests for your application. | ||
6 | """ | ||
7 | |||
8 | from django.test import TestCase | ||
9 | |||
10 | class SimpleTest(TestCase): | ||
11 | def test_basic_addition(self): | ||
12 | """ | ||
13 | Tests that 1 + 1 always equals 2. | ||
14 | """ | ||
15 | self.failUnlessEqual(1 + 1, 2) | ||
16 | |||
17 | __test__ = {"doctest": """ | ||
18 | Another way to test that 1 + 1 is equal to 2. | ||
19 | |||
20 | >>> 1 + 1 == 2 | ||
21 | True | ||
22 | """} | ||
23 | |||
diff --git a/greenbox/recipe/urls.py b/greenbox/recipe/urls.py deleted file mode 100644 index 4c937a0..0000000 --- a/greenbox/recipe/urls.py +++ /dev/null | |||
@@ -1,7 +0,0 @@ | |||
1 | from django.conf.urls.defaults import patterns, url | ||
2 | |||
3 | |||
4 | urlpatterns = patterns('recipe.views', | ||
5 | url(r'^(?P<slug>[^/]+)', 'recipe_details'), | ||
6 | url(r'^$', 'recipe_list'), | ||
7 | ) | ||
diff --git a/greenbox/recipe/views.py b/greenbox/recipe/views.py deleted file mode 100644 index 3efdb9e..0000000 --- a/greenbox/recipe/views.py +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | from models import Recipe | ||
2 | from django.views.generic import list_detail | ||
3 | |||
4 | |||
5 | def recipe_list(request): | ||
6 | data = Recipe.objects.all() | ||
7 | return list_detail.object_list(request, queryset=data) | ||
8 | |||
9 | |||
10 | def recipe_details(request, slug): | ||
11 | return list_detail.object_detail(request, queryset=Recipe.objects.all(), slug=slug) | ||