diff options
| author | user@node5.net <user@node5.net> | 2025-12-07 01:30:50 +0100 |
|---|---|---|
| committer | user@node5.net <user@node5.net> | 2025-12-07 12:55:14 +0100 |
| commit | 8c683008ea4937524e7bc3d3298bff31e7009785 (patch) | |
| tree | 9495eb4f56375286ae9f19ffc61afc200aa1a366 /web_interface/drinks | |
| parent | 65eacbe27205594ce4991e2d1ccf452c2925b906 (diff) | |
Add new drinks app with data models
Diffstat (limited to 'web_interface/drinks')
| -rw-r--r-- | web_interface/drinks/__init__.py | 0 | ||||
| -rw-r--r-- | web_interface/drinks/admin.py | 3 | ||||
| -rw-r--r-- | web_interface/drinks/apps.py | 5 | ||||
| -rw-r--r-- | web_interface/drinks/migrations/__init__.py | 0 | ||||
| -rw-r--r-- | web_interface/drinks/models.py | 100 | ||||
| -rw-r--r-- | web_interface/drinks/tests.py | 3 | ||||
| -rw-r--r-- | web_interface/drinks/urls.py | 7 | ||||
| -rw-r--r-- | web_interface/drinks/views.py | 7 |
8 files changed, 125 insertions, 0 deletions
diff --git a/web_interface/drinks/__init__.py b/web_interface/drinks/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web_interface/drinks/__init__.py diff --git a/web_interface/drinks/admin.py b/web_interface/drinks/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/web_interface/drinks/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/web_interface/drinks/apps.py b/web_interface/drinks/apps.py new file mode 100644 index 0000000..3be1a01 --- /dev/null +++ b/web_interface/drinks/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class DrinksConfig(AppConfig): + name = 'drinks' diff --git a/web_interface/drinks/migrations/__init__.py b/web_interface/drinks/migrations/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/web_interface/drinks/migrations/__init__.py diff --git a/web_interface/drinks/models.py b/web_interface/drinks/models.py new file mode 100644 index 0000000..f1889bd --- /dev/null +++ b/web_interface/drinks/models.py @@ -0,0 +1,100 @@ +from django.db import models +from colorfield.fields import ColorField + + +class Drink(models.Model): + name = models.CharField( + verbose_name="Name", + help_text="Name of the drink, for displaying in overview", + ) + + description = models.TextField( + verbose_name="Description", + help_text="Free text field that will be shown to the users", + ) + + picture = models.ImageField( + verbose_name="Picture", + help_text="A picture for the overview", + ) + + author = models.ForeignKey( + verbose_name="Author", + help_text="Author of the drink", + to=Author, + on_delete=models.CASCADE + ) + + +class Author(models.Model): + first_name = models.CharField( + verbose_name="First name", + help_text="First name of the author of a drink", + ) + + last_name = models.CharField( + verbose_name="Last name", + help_text="Last name of the author of a drink", + ) + + @property + def initials(self) -> str: + return f"{self.first_name[0].upper()}.{self.last_name[0].upper()}." + + +class Bottle(models.Model): + name = models.CharField( + verbose_name="Bottle", + help_text="Name of the type bottle. e.g. Coca Cola, *Specific Whiskey*", + ) + + description = models.TextField( + verbose_name="Description", + help_text="Free text field that will be shown to the users", + ) + + picture = models.ImageField( + verbose_name="Picture", + help_text="A picture for the overview", + ) + + color = ColorField( + verbose_name="Color", + help_text="Color of the drink, used in the UI", + ) + +class Unit(models.Model): + abbreviation = models.CharField( + verbose_name="Bottle", + help_text="E.g: ml.", + ) + + name = models.CharField( + verbose_name="Bottle", + help_text="E.g: ml.", + ) + + pump_time = models.FloatField( + verbose_name="Pump time", + help_text="Amount of time to run the pump for to dispence 1 of these units", + ) + + valve_time = models.FloatField( + verbose_name="Pump time", + help_text="Amount of time to run the pump for to dispence 1 of these units", + ) + + +class Ingredient(models.Model): + bottle = models.ForeignKey( + verbose_name="Bottle", + help_text="This ingredient's bottle", + to=Bottle, + on_delete=models.CASCADE + ) + + amount = models.IntegerField( + verbose_name="Amount", + help_text=="In conjunction with unit it is an absolute amount", + ) + diff --git a/web_interface/drinks/tests.py b/web_interface/drinks/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/web_interface/drinks/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/web_interface/drinks/urls.py b/web_interface/drinks/urls.py new file mode 100644 index 0000000..5119061 --- /dev/null +++ b/web_interface/drinks/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path("", views.index, name="index"), +] diff --git a/web_interface/drinks/views.py b/web_interface/drinks/views.py new file mode 100644 index 0000000..8c5ef2b --- /dev/null +++ b/web_interface/drinks/views.py @@ -0,0 +1,7 @@ +from django.shortcuts import render +from django.http import HttpResponse + +# Create your views here. + +def index(request): + return HttpResponse("πΊπΈπ»") |
