summaryrefslogtreecommitdiff
path: root/recipe/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'recipe/models.py')
-rw-r--r--recipe/models.py66
1 files changed, 48 insertions, 18 deletions
diff --git a/recipe/models.py b/recipe/models.py
index 1db7f42..548536e 100644
--- a/recipe/models.py
+++ b/recipe/models.py
@@ -1,4 +1,6 @@
1from django.db import models 1from django.db import models
2from django.contrib import admin
3from django.db.models import fields
2 4
3 5
4class Unit(models.Model): 6class Unit(models.Model):
@@ -6,14 +8,8 @@ class Unit(models.Model):
6 class Meta: 8 class Meta:
7 ordering = ('name',) 9 ordering = ('name',)
8 10
9 name = models.CharField(max_length=100) 11 name = fields.CharField(max_length=100)
10 abbreviation = models.CharField(max_length=10, blank=True, null=True) 12 abbreviation = fields.CharField(max_length=10, blank=True, null=True)
11 grams = models.DecimalField(max_digits=10, decimal_places=10,
12 blank=True, null=True,
13 help_text="Conversion from this unit to grams (dry measure)")
14 liters = models.DecimalField(max_digits=10, decimal_places=10,
15 blank=True, null=True,
16 help_text="Conversion from this unit to liters (liquid measure)")
17 13
18 def __unicode__(self): 14 def __unicode__(self):
19 return "{0} ({1})".format(self.name, self.abbreviation) 15 return "{0} ({1})".format(self.name, self.abbreviation)
@@ -24,14 +20,14 @@ class Recipe(models.Model):
24 class Meta: 20 class Meta:
25 ordering = ('title',) 21 ordering = ('title',)
26 22
27 title = models.CharField(max_length=100) 23 title = fields.CharField(max_length=100)
28 slug = models.SlugField(max_length=150) 24 slug = fields.SlugField(max_length=150)
29 description = models.TextField(blank=True, null=True) 25 description = fields.TextField(blank=True, null=True)
30 servings = models.IntegerField(blank=True, null=True) 26 servings = fields.IntegerField(blank=True, null=True)
31 instructions = models.TextField() 27 instructions = fields.TextField()
32 oven_temp = models.IntegerField(blank=True, null=True) 28 oven_temp = fields.IntegerField(blank=True, null=True)
33 cook_time = models.IntegerField(blank=True, null=True, help_text="In minutes") 29 cook_time = fields.IntegerField(blank=True, null=True, help_text="In minutes")
34 prep_time = models.IntegerField(blank=True, null=True, help_text="In minutes") 30 prep_time = fields.IntegerField(blank=True, null=True, help_text="In minutes")
35 31
36 def __unicode__(self): 32 def __unicode__(self):
37 return self.title 33 return self.title
@@ -42,7 +38,7 @@ class Ingredient(models.Model):
42 class Meta: 38 class Meta:
43 ordering = ('name',) 39 ordering = ('name',)
44 40
45 name = models.CharField(max_length=100, unique=True) 41 name = fields.CharField(max_length=100, unique=True)
46 42
47 def __unicode__(self): 43 def __unicode__(self):
48 return self.name 44 return self.name
@@ -52,8 +48,42 @@ class RecipeIngredient(models.Model):
52 48
53 ingredient = models.ForeignKey(Ingredient) 49 ingredient = models.ForeignKey(Ingredient)
54 units = models.ForeignKey(Unit) 50 units = models.ForeignKey(Unit)
55 quantity = models.FloatField() 51 quantity = fields.FloatField()
56 recipe = models.ForeignKey(Recipe) 52 recipe = models.ForeignKey(Recipe)
57 53
58 def __unicode__(self): 54 def __unicode__(self):
59 return "{0} in {1}".format(self.ingredient.name, self.recipe.title) 55 return "{0} in {1}".format(self.ingredient.name, self.recipe.title)
56
57
58class UnitAdmin(admin.ModelAdmin):
59
60 list_display = ('name', 'abbreviation')
61 ordering = ('name',)
62
63
64class IngredientInline(admin.TabularInline):
65
66 model = RecipeIngredient
67 extra = 12
68
69
70class RecipeAdmin(admin.ModelAdmin):
71
72 list_display = ('title',)
73 inlines = (IngredientInline,)
74 search_fields = ('title',)
75 prepopulated_fields = { "slug": ("title",) }
76
77
78class IngredientAdmin(admin.ModelAdmin):
79
80 list_display = ('name',)
81 search_fields = ('name',)
82
83
84try:
85 admin.site.register(Unit, UnitAdmin)
86 admin.site.register(Ingredient, IngredientAdmin)
87 admin.site.register(Recipe, RecipeAdmin)
88except admin.sites.AlreadyRegistered:
89 pass