Do some more shit
This commit is contained in:
parent
a4e58a5fa4
commit
1952d7f3d4
5 changed files with 114 additions and 23 deletions
|
|
@ -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
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
@ -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}"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -29,12 +29,8 @@
|
|||
{% endblock %}
|
||||
{% block bootstrap5_content %}
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{% block content %}
|
||||
{% endblock content %}
|
||||
</div>
|
||||
</div>
|
||||
{% block content %}
|
||||
{% endblock content %}
|
||||
</div>
|
||||
{% endblock bootstrap5_content %}
|
||||
{% block bootstrap5_after_content %}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,41 @@
|
|||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<h2>{{ object.name }}</h2>
|
||||
<h4>{{ object.style }}</h4>
|
||||
<p>{{ object.notes }}</p>
|
||||
<h3>Ingredients</h3>
|
||||
<ul>
|
||||
{% for ingredient in ingredients %}
|
||||
<li>{{ ingredient.humanised_mass }}{{ ingredient.unit }} of {{ ingredient.ingredient.name }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<h2>{{ object.name }}</h2>
|
||||
<h4>{{ object.style }}</h4>
|
||||
<p>{{ object.notes }}</p>
|
||||
<h3>Fermentables</h3>
|
||||
<ul>
|
||||
{% for add in Fermentable %}
|
||||
<li>{{ add.humanised_mass }}{{ add.unit }} - {{ add.ingredient.producer }} {{ add.ingredient.name }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h3>Yeast</h3>
|
||||
<ul>
|
||||
{% for add in Yeast %}
|
||||
<li>{{ add.humanised_mass }}{{ add.unit }} - {{ add.ingredient.producer }} {{ add.ingredient.name }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h3>Chemical</h3>
|
||||
<ul>
|
||||
{% for add in Chemical %}
|
||||
<li>{{ add.humanised_mass }}{{ add.unit }} - {{ add.ingredient.producer }} {{ add.ingredient.name }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h3>Bottling ({{ object.bottling_date }})</h3>
|
||||
{{ object.priming_sugar }}g of priming suger for {{ object.bottled_volume }}L of bottled liquid.
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
OG: {{ object.original_gravity }}
|
||||
FG: {{ object.final_gravity }}
|
||||
{% if object.abv %}
|
||||
ABV: {{ object.abv|floatformat:1 }}%
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock content %}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue