From 3b358774cf923e021ad0d35dc4451ff12bb08dfb Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Mon, 24 Jun 2024 21:45:20 +0100 Subject: [PATCH] Add ingredients and styles models --- config/settings/base.py | 2 + reinheit/apps/brew/admin.py | 9 ++- reinheit/apps/brew/migrations/0001_initial.py | 77 +++++++++++++++++++ reinheit/apps/brew/models.py | 8 +- reinheit/apps/ingredients/__init__.py | 0 reinheit/apps/ingredients/admin.py | 8 ++ reinheit/apps/ingredients/apps.py | 6 ++ .../ingredients/migrations/0001_initial.py | 62 +++++++++++++++ .../migrations/0002_ingredient_description.py | 19 +++++ .../0003_alter_ingredient_description.py | 18 +++++ .../apps/ingredients/migrations/__init__.py | 0 reinheit/apps/ingredients/models.py | 27 +++++++ reinheit/apps/ingredients/tests.py | 3 + reinheit/apps/ingredients/views.py | 3 + reinheit/apps/styles/__init__.py | 0 reinheit/apps/styles/admin.py | 8 ++ reinheit/apps/styles/apps.py | 6 ++ .../apps/styles/migrations/0001_initial.py | 28 +++++++ reinheit/apps/styles/migrations/__init__.py | 0 reinheit/apps/styles/models.py | 7 ++ reinheit/apps/styles/tests.py | 3 + reinheit/apps/styles/views.py | 3 + 22 files changed, 294 insertions(+), 3 deletions(-) create mode 100644 reinheit/apps/brew/migrations/0001_initial.py create mode 100644 reinheit/apps/ingredients/__init__.py create mode 100644 reinheit/apps/ingredients/admin.py create mode 100644 reinheit/apps/ingredients/apps.py create mode 100644 reinheit/apps/ingredients/migrations/0001_initial.py create mode 100644 reinheit/apps/ingredients/migrations/0002_ingredient_description.py create mode 100644 reinheit/apps/ingredients/migrations/0003_alter_ingredient_description.py create mode 100644 reinheit/apps/ingredients/migrations/__init__.py create mode 100644 reinheit/apps/ingredients/models.py create mode 100644 reinheit/apps/ingredients/tests.py create mode 100644 reinheit/apps/ingredients/views.py create mode 100644 reinheit/apps/styles/__init__.py create mode 100644 reinheit/apps/styles/admin.py create mode 100644 reinheit/apps/styles/apps.py create mode 100644 reinheit/apps/styles/migrations/0001_initial.py create mode 100644 reinheit/apps/styles/migrations/__init__.py create mode 100644 reinheit/apps/styles/models.py create mode 100644 reinheit/apps/styles/tests.py create mode 100644 reinheit/apps/styles/views.py diff --git a/config/settings/base.py b/config/settings/base.py index 29cfd8a..4c096ef 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -38,6 +38,8 @@ INSTALLED_APPS = [ "django.contrib.messages", "django.contrib.staticfiles", "reinheit.apps.brew", + "reinheit.apps.styles", + "reinheit.apps.ingredients", ] MIDDLEWARE = [ diff --git a/reinheit/apps/brew/admin.py b/reinheit/apps/brew/admin.py index 2e01342..05ee877 100644 --- a/reinheit/apps/brew/admin.py +++ b/reinheit/apps/brew/admin.py @@ -5,5 +5,10 @@ from .models import Brew, Addition # Register your models here. -admin.site.register(Brew) -admin.site.register(Addition) +class AdditionInline(admin.TabularInline): + model = Addition + + +@admin.register(Brew) +class BrewAdmin(admin.ModelAdmin): + inlines = [AdditionInline] diff --git a/reinheit/apps/brew/migrations/0001_initial.py b/reinheit/apps/brew/migrations/0001_initial.py new file mode 100644 index 0000000..cd33970 --- /dev/null +++ b/reinheit/apps/brew/migrations/0001_initial.py @@ -0,0 +1,77 @@ +# Generated by Django 5.0.6 on 2024-06-24 20:32 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ("ingredients", "0001_initial"), + ("styles", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="Brew", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255)), + ("pitch_date", models.DateField(null=True)), + ("bottling_date", models.DateField(null=True)), + ( + "fermenter_volume", + models.FloatField( + help_text="Volume of liquid in fermenter prior to piching yeast" + ), + ), + ( + "bottled_volume", + models.FloatField(help_text="Volume of liquid bottled"), + ), + ( + "style", + models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, to="styles.style" + ), + ), + ], + ), + migrations.CreateModel( + name="Addition", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("mass", models.FloatField(help_text="The mass in kg added")), + ("added", models.DateTimeField(null=True)), + ( + "ingredient", + models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + to="ingredients.ingredient", + ), + ), + ( + "brew", + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="brew.brew"), + ), + ], + ), + ] diff --git a/reinheit/apps/brew/models.py b/reinheit/apps/brew/models.py index 4180783..b2fa8f3 100644 --- a/reinheit/apps/brew/models.py +++ b/reinheit/apps/brew/models.py @@ -17,10 +17,16 @@ class Brew(models.Model): ) bottled_volume = models.FloatField(help_text="Volume of liquid bottled") + def __str__(self): + return f"{self.style}: {self.name}" + class Addition(models.Model): - ingredient = models.ForeignKey("ingredients.Ingredient", on_delte=models.PROTECT) + ingredient = models.ForeignKey("ingredients.Ingredient", on_delete=models.PROTECT) brew = models.ForeignKey("Brew", on_delete=models.CASCADE) mass = models.FloatField(help_text="The mass in kg added") added = models.DateTimeField(null=True) + + def __str__(self): + return f"{self.mass}kg of {self.ingredient} in {self.brew}" diff --git a/reinheit/apps/ingredients/__init__.py b/reinheit/apps/ingredients/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/reinheit/apps/ingredients/admin.py b/reinheit/apps/ingredients/admin.py new file mode 100644 index 0000000..a1c9ee2 --- /dev/null +++ b/reinheit/apps/ingredients/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +from .models import Ingredient, Producer + +# Register your models here. + +admin.site.register(Ingredient) +admin.site.register(Producer) diff --git a/reinheit/apps/ingredients/apps.py b/reinheit/apps/ingredients/apps.py new file mode 100644 index 0000000..3637b78 --- /dev/null +++ b/reinheit/apps/ingredients/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class IngredientsConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "reinheit.apps.ingredients" diff --git a/reinheit/apps/ingredients/migrations/0001_initial.py b/reinheit/apps/ingredients/migrations/0001_initial.py new file mode 100644 index 0000000..ed9f82a --- /dev/null +++ b/reinheit/apps/ingredients/migrations/0001_initial.py @@ -0,0 +1,62 @@ +# Generated by Django 5.0.6 on 2024-06-24 20:32 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Producer", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255)), + ], + ), + migrations.CreateModel( + name="Ingredient", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "kind", + models.CharField( + choices=[ + ("YEAST", "Yeast"), + ("FERM", "Fermentable"), + ("HOP", "Hop"), + ], + max_length=5, + ), + ), + ("name", models.CharField(max_length=255)), + ( + "producer", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="ingredients.producer", + ), + ), + ], + ), + ] diff --git a/reinheit/apps/ingredients/migrations/0002_ingredient_description.py b/reinheit/apps/ingredients/migrations/0002_ingredient_description.py new file mode 100644 index 0000000..81ed15c --- /dev/null +++ b/reinheit/apps/ingredients/migrations/0002_ingredient_description.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0.6 on 2024-06-24 20:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("ingredients", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="ingredient", + name="description", + field=models.TextField(default=""), + preserve_default=False, + ), + ] diff --git a/reinheit/apps/ingredients/migrations/0003_alter_ingredient_description.py b/reinheit/apps/ingredients/migrations/0003_alter_ingredient_description.py new file mode 100644 index 0000000..069e656 --- /dev/null +++ b/reinheit/apps/ingredients/migrations/0003_alter_ingredient_description.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0.6 on 2024-06-24 20:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("ingredients", "0002_ingredient_description"), + ] + + operations = [ + migrations.AlterField( + model_name="ingredient", + name="description", + field=models.TextField(blank=True, default=""), + ), + ] diff --git a/reinheit/apps/ingredients/migrations/__init__.py b/reinheit/apps/ingredients/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/reinheit/apps/ingredients/models.py b/reinheit/apps/ingredients/models.py new file mode 100644 index 0000000..214dad2 --- /dev/null +++ b/reinheit/apps/ingredients/models.py @@ -0,0 +1,27 @@ +from django.db import models + +# Create your models here. + + +class Ingredient(models.Model): + + class Type(models.TextChoices): + YEAST = "YEAST", "Yeast" + FERMENTABLE = "FERM", "Fermentable" + HOP = "HOP", "Hop" + + kind = models.CharField(max_length=5, choices=Type) + + name = models.CharField(max_length=255) + description = models.TextField(blank=True, default="") + producer = models.ForeignKey("Producer", on_delete=models.CASCADE) + + def __str__(self): + return f"{self.get_kind_display()}: {self.name}" + + +class Producer(models.Model): + name = models.CharField(max_length=255) + + def __str__(self): + return self.name diff --git a/reinheit/apps/ingredients/tests.py b/reinheit/apps/ingredients/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/reinheit/apps/ingredients/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/reinheit/apps/ingredients/views.py b/reinheit/apps/ingredients/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/reinheit/apps/ingredients/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/reinheit/apps/styles/__init__.py b/reinheit/apps/styles/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/reinheit/apps/styles/admin.py b/reinheit/apps/styles/admin.py new file mode 100644 index 0000000..2639ac3 --- /dev/null +++ b/reinheit/apps/styles/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +from .models import Style + +# Register your models here. + + +admin.site.register(Style) diff --git a/reinheit/apps/styles/apps.py b/reinheit/apps/styles/apps.py new file mode 100644 index 0000000..d6b38db --- /dev/null +++ b/reinheit/apps/styles/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class StylesConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "reinheit.apps.styles" diff --git a/reinheit/apps/styles/migrations/0001_initial.py b/reinheit/apps/styles/migrations/0001_initial.py new file mode 100644 index 0000000..461e05b --- /dev/null +++ b/reinheit/apps/styles/migrations/0001_initial.py @@ -0,0 +1,28 @@ +# Generated by Django 5.0.6 on 2024-06-24 20:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Style", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("name", models.CharField(max_length=255)), + ], + ), + ] diff --git a/reinheit/apps/styles/migrations/__init__.py b/reinheit/apps/styles/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/reinheit/apps/styles/models.py b/reinheit/apps/styles/models.py new file mode 100644 index 0000000..ec3eb17 --- /dev/null +++ b/reinheit/apps/styles/models.py @@ -0,0 +1,7 @@ +from django.db import models + +# Create your models here. + + +class Style(models.Model): + name = models.CharField(max_length=255) diff --git a/reinheit/apps/styles/tests.py b/reinheit/apps/styles/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/reinheit/apps/styles/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/reinheit/apps/styles/views.py b/reinheit/apps/styles/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/reinheit/apps/styles/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here.