From 1952d7f3d462696138693172a4a7d51333881c0a Mon Sep 17 00:00:00 2001 From: Maximilian Friedersdorff Date: Tue, 25 Jun 2024 22:08:42 +0100 Subject: [PATCH] Do some more shit --- ..._gravity_brew_original_gravity_and_more.py | 45 ++++++++++++++++++ reinheit/apps/brew/models.py | 27 ++++++++--- reinheit/apps/brew/views.py | 10 +++- reinheit/templates/base.html | 8 +--- reinheit/templates/brew/brew_detail.html | 47 +++++++++++++++---- 5 files changed, 114 insertions(+), 23 deletions(-) create mode 100644 reinheit/apps/brew/migrations/0004_brew_final_gravity_brew_original_gravity_and_more.py diff --git a/reinheit/apps/brew/migrations/0004_brew_final_gravity_brew_original_gravity_and_more.py b/reinheit/apps/brew/migrations/0004_brew_final_gravity_brew_original_gravity_and_more.py new file mode 100644 index 0000000..7df9765 --- /dev/null +++ b/reinheit/apps/brew/migrations/0004_brew_final_gravity_brew_original_gravity_and_more.py @@ -0,0 +1,45 @@ +# Generated by Django 5.0.6 on 2024-06-25 20:50 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("brew", "0003_brew_notes"), + ] + + operations = [ + migrations.AddField( + model_name="brew", + name="final_gravity", + field=models.FloatField(null=True), + ), + migrations.AddField( + model_name="brew", + name="original_gravity", + field=models.FloatField(null=True), + ), + migrations.AlterField( + model_name="addition", + name="brew", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="additions", + to="brew.brew", + ), + ), + migrations.AlterField( + model_name="brew", + name="bottled_volume", + field=models.FloatField(help_text="Volume of liquid bottled", null=True), + ), + migrations.AlterField( + model_name="brew", + name="priming_sugar", + field=models.FloatField( + help_text="Mass of priming sugar for the whole batch", null=True + ), + ), + ] diff --git a/reinheit/apps/brew/models.py b/reinheit/apps/brew/models.py index 14e66c3..8726199 100644 --- a/reinheit/apps/brew/models.py +++ b/reinheit/apps/brew/models.py @@ -6,20 +6,33 @@ from django.db import models class Brew(models.Model): name = models.CharField(max_length=255) + style = models.ForeignKey("styles.Style", on_delete=models.PROTECT) + notes = models.TextField(default="", blank=True) pitch_date = models.DateField(null=True) - bottling_date = models.DateField(null=True) - - style = models.ForeignKey("styles.Style", on_delete=models.PROTECT) - 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") - priming_sugar = models.FloatField(help_text="Mass of priming sugar for the whole batch") + bottling_date = models.DateField(null=True) + bottled_volume = models.FloatField(null=True, help_text="Volume of liquid bottled") + priming_sugar = models.FloatField( + null=True, help_text="Mass of priming sugar for the whole batch" + ) - notes = models.TextField(default="", blank=True) + original_gravity = models.FloatField(null=True) + final_gravity = models.FloatField(null=True) + + @property + def abv(self): + og = self.original_gravity + fg = self.final_gravity + + if og is None or fg is None: + return None + + delta = self.original_gravity - self.final_gravity + return (76.08 * delta / (1.775 - og)) * (fg / 0.794) def __str__(self): return f"{self.style}: {self.name}" diff --git a/reinheit/apps/brew/views.py b/reinheit/apps/brew/views.py index 39060a0..cc7a057 100644 --- a/reinheit/apps/brew/views.py +++ b/reinheit/apps/brew/views.py @@ -1,5 +1,6 @@ from django.views.generic import ListView, DetailView +from ..ingredients.models import Ingredient from .models import Brew # Create your views here. @@ -13,4 +14,11 @@ class BrewView(DetailView): model = Brew def get_context_data(self, **kwargs): - return super().get_context_data(ingredients=self.object.additions.all(), **kwargs) + context = super().get_context_data(**kwargs) + for value, label in Ingredient.Type.choices: + print(label, value) + context[label] = self.object.additions.filter(ingredient__kind=value) + + context["ingredient_types"] = Ingredient.Type.names + + return context diff --git a/reinheit/templates/base.html b/reinheit/templates/base.html index 1079dd5..97bfb23 100644 --- a/reinheit/templates/base.html +++ b/reinheit/templates/base.html @@ -29,12 +29,8 @@ {% endblock %} {% block bootstrap5_content %}
-
-
- {% block content %} - {% endblock content %} -
-
+ {% block content %} + {% endblock content %}
{% endblock bootstrap5_content %} {% block bootstrap5_after_content %} diff --git a/reinheit/templates/brew/brew_detail.html b/reinheit/templates/brew/brew_detail.html index 392d93a..298d68a 100644 --- a/reinheit/templates/brew/brew_detail.html +++ b/reinheit/templates/brew/brew_detail.html @@ -1,12 +1,41 @@ {% extends "base.html" %} {% block content %} -

{{ object.name }}

-

{{ object.style }}

-

{{ object.notes }}

-

Ingredients

- +
+
+

{{ object.name }}

+

{{ object.style }}

+

{{ object.notes }}

+

Fermentables

+
    + {% for add in Fermentable %} +
  • {{ add.humanised_mass }}{{ add.unit }} - {{ add.ingredient.producer }} {{ add.ingredient.name }}
  • + {% endfor %} +
+

Yeast

+
    + {% for add in Yeast %} +
  • {{ add.humanised_mass }}{{ add.unit }} - {{ add.ingredient.producer }} {{ add.ingredient.name }}
  • + {% endfor %} +
+

Chemical

+
    + {% for add in Chemical %} +
  • {{ add.humanised_mass }}{{ add.unit }} - {{ add.ingredient.producer }} {{ add.ingredient.name }}
  • + {% endfor %} +
+

Bottling ({{ object.bottling_date }})

+ {{ object.priming_sugar }}g of priming suger for {{ object.bottled_volume }}L of bottled liquid. +
+
+
+
+ OG: {{ object.original_gravity }} + FG: {{ object.final_gravity }} + {% if object.abv %} + ABV: {{ object.abv|floatformat:1 }}% + {% endif %} +
+
+
+
{% endblock content %}