diff --git a/cookbook/migrations/0068_auto_20200629_2127.py b/cookbook/migrations/0068_auto_20200629_2127.py new file mode 100644 index 000000000..daea00bd4 --- /dev/null +++ b/cookbook/migrations/0068_auto_20200629_2127.py @@ -0,0 +1,55 @@ +# Generated by Django 3.0.7 on 2020-06-29 19:27 + +from django.db import migrations, models +import django.db.models.deletion + + +def convert_old_specials(apps, schema_editor): + Ingredient = apps.get_model('cookbook', 'Ingredient') + Food = apps.get_model('cookbook', 'Food') + Unit = apps.get_model('cookbook', 'Unit') + + for i in Ingredient.objects.all(): + if i.amount == 0: + i.no_amount = True + if i.unit.name == 'Special:Header': + i.header = True + i.unit = None + i.food = None + i.save() + + try: + Unit.objects.filter(name='Special:Header').delete() + Food.objects.filter(name='Header').delete() + except Exception: + pass + + +class Migration(migrations.Migration): + dependencies = [ + ('cookbook', '0067_auto_20200629_1508'), + ] + + operations = [ + migrations.AddField( + model_name='ingredient', + name='header', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='ingredient', + name='no_amount', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='ingredient', + name='food', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='cookbook.Food'), + ), + migrations.AlterField( + model_name='ingredient', + name='unit', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='cookbook.Unit'), + ), + migrations.RunPython(convert_old_specials) + ] diff --git a/cookbook/migrations/0069_auto_20200629_2134.py b/cookbook/migrations/0069_auto_20200629_2134.py new file mode 100644 index 000000000..0e1a2e1fd --- /dev/null +++ b/cookbook/migrations/0069_auto_20200629_2134.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.7 on 2020-06-29 19:34 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('cookbook', '0068_auto_20200629_2127'), + ] + + operations = [ + migrations.RenameField( + model_name='ingredient', + old_name='header', + new_name='is_header', + ), + ] diff --git a/cookbook/models.py b/cookbook/models.py index 42b7fd634..183d9e4ed 100644 --- a/cookbook/models.py +++ b/cookbook/models.py @@ -146,10 +146,12 @@ class Food(models.Model): class Ingredient(models.Model): - food = models.ForeignKey(Food, on_delete=models.PROTECT) - unit = models.ForeignKey(Unit, on_delete=models.PROTECT) + food = models.ForeignKey(Food, on_delete=models.PROTECT, null=True, blank=True) + unit = models.ForeignKey(Unit, on_delete=models.PROTECT, null=True, blank=True) amount = models.DecimalField(default=0, decimal_places=16, max_digits=32) note = models.CharField(max_length=256, null=True, blank=True) + is_header = models.BooleanField(default=False) + no_amount = models.BooleanField(default=False) order = models.IntegerField(default=0) def __str__(self): diff --git a/cookbook/serializer.py b/cookbook/serializer.py index 795b3835d..91a92f6e7 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -97,13 +97,13 @@ class FoodSerializer(UniqueFieldsMixin, serializers.ModelSerializer): class IngredientSerializer(WritableNestedModelSerializer): - food = FoodSerializer() - unit = UnitSerializer() + food = FoodSerializer(allow_null=True) + unit = UnitSerializer(allow_null=True) amount = CustomDecimalField() class Meta: model = Ingredient - fields = ('id', 'food', 'unit', 'amount', 'note', 'order') + fields = ('id', 'food', 'unit', 'amount', 'note', 'order', 'is_header', 'no_amount') class StepSerializer(WritableNestedModelSerializer): diff --git a/cookbook/templates/forms/edit_internal_recipe.html b/cookbook/templates/forms/edit_internal_recipe.html index c48eca531..5787c87e0 100644 --- a/cookbook/templates/forms/edit_internal_recipe.html +++ b/cookbook/templates/forms/edit_internal_recipe.html @@ -93,7 +93,6 @@ -
|
{{ i.note }}
@@ -143,11 +143,11 @@
|