Meta-Informationen eingefügt, Änderungs- und Erstellungsdatum von Gerichten

This commit is contained in:
2026-05-08 10:30:31 +02:00
parent 932d17d12a
commit 5e0195add5
17 changed files with 346832 additions and 0 deletions

4
SGTMensa.kdev4 Normal file
View File

@@ -0,0 +1,4 @@
[Project]
CreatedFrom=
Manager=KDevCustomBuildSystem
Name=SGTMensa

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,48 @@
# Generated by Django 6.0.5 on 2026-05-08 08:26
import datetime
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mensa_app', '0001_initial'),
]
operations = [
migrations.AlterModelOptions(
name='bestellung',
options={'verbose_name': 'Bestellung', 'verbose_name_plural': 'Bestellungen'},
),
migrations.AlterModelOptions(
name='gericht',
options={'get_latest_by': 'time_last_change', 'ordering': ['kategorie', 'name', 'preis'], 'permissions': [('can_create_Gericht', 'Kann neues Gericht anlegen')], 'verbose_name': 'Gericht', 'verbose_name_plural': 'Gerichte'},
),
migrations.AlterModelOptions(
name='kategorie',
options={'verbose_name': 'Kategorie', 'verbose_name_plural': 'Kategorien'},
),
migrations.AlterModelOptions(
name='menue',
options={'verbose_name': 'Menü', 'verbose_name_plural': 'Menüs'},
),
migrations.AlterModelOptions(
name='person',
options={'verbose_name_plural': 'Personen'},
),
migrations.AlterModelOptions(
name='speiseplantag',
options={'verbose_name': 'Tag mit Speiseplan', 'verbose_name_plural': 'Tage mit Speiseplan'},
),
migrations.AddField(
model_name='gericht',
name='time_creation',
field=models.TimeField(default=datetime.datetime(2026, 5, 8, 8, 26, 49, 843239)),
),
migrations.AddField(
model_name='gericht',
name='time_last_change',
field=models.TimeField(default=datetime.datetime(2026, 5, 8, 8, 26, 49, 843239)),
),
]

View File

@@ -1,6 +1,7 @@
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.utils import timezone from django.utils import timezone
import datetime
class Person(models.Model): class Person(models.Model):
"""Repräsentiert Schüler oder Lehrer.""" """Repräsentiert Schüler oder Lehrer."""
@@ -8,6 +9,9 @@ class Person(models.Model):
rolle = models.CharField(max_length=20, choices=[('schueler', 'Schüler'), ('lehrer', 'Lehrer'), ('mitarbeiter','Mensa-Mitarbeiter'), ('chef','Mensa-Leitung')]) rolle = models.CharField(max_length=20, choices=[('schueler', 'Schüler'), ('lehrer', 'Lehrer'), ('mitarbeiter','Mensa-Mitarbeiter'), ('chef','Mensa-Leitung')])
klasse = models.CharField(max_length=4, blank=True, null=True) # Nur für Schüler relevant klasse = models.CharField(max_length=4, blank=True, null=True) # Nur für Schüler relevant
class Meta:
verbose_name_plural = "Personen"
def __str__(self): def __str__(self):
return f"{self.user.username} ({self.rolle})" return f"{self.user.username} ({self.rolle})"
@@ -15,6 +19,10 @@ class SpeiseplanTag(models.Model):
"""Ein bestimmter Tag im Speiseplan.""" """Ein bestimmter Tag im Speiseplan."""
datum = models.DateField(unique=True) datum = models.DateField(unique=True)
class Meta:
verbose_name = "Tag mit Speiseplan"
verbose_name_plural = "Tage mit Speiseplan"
def __str__(self): def __str__(self):
return self.datum.strftime('%d.%m.%Y') return self.datum.strftime('%d.%m.%Y')
@@ -25,6 +33,7 @@ class Kategorie(models.Model):
name = models.CharField(max_length=50, unique=True, default="") name = models.CharField(max_length=50, unique=True, default="")
class Meta: class Meta:
verbose_name = "Kategorie"
verbose_name_plural = "Kategorien" verbose_name_plural = "Kategorien"
def __str__(self): def __str__(self):
@@ -45,6 +54,11 @@ class Gericht(models.Model):
allergene = models.TextField(blank=True, default="") allergene = models.TextField(blank=True, default="")
preis = models.DecimalField(max_digits=5, decimal_places=2, default=0.00) preis = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
now = datetime.datetime.now()
time_last_change = models.TimeField(default=now)
time_creation = models.TimeField(default=now)
# Das Attribut für das "Dauerangebot" # Das Attribut für das "Dauerangebot"
ist_dauerangebot = models.BooleanField( ist_dauerangebot = models.BooleanField(
default=False, default=False,
@@ -54,6 +68,13 @@ class Gericht(models.Model):
def __str__(self): def __str__(self):
return f"{self.name} ({self.kategorie.name})" return f"{self.name} ({self.kategorie.name})"
class Meta:
verbose_name = "Gericht"
verbose_name_plural = "Gerichte"
permissions = [("can_create_Gericht", "Kann neues Gericht anlegen")]
ordering = ["kategorie", "name", "preis"]
get_latest_by = "time_last_change"
class Menue(models.Model): class Menue(models.Model):
"""Eine Kombination von Speisen für einen Tag (z.B. Hauptgang + Dessert).""" """Eine Kombination von Speisen für einen Tag (z.B. Hauptgang + Dessert)."""
tag = models.ForeignKey(SpeiseplanTag, on_delete=models.CASCADE, related_name='menues') tag = models.ForeignKey(SpeiseplanTag, on_delete=models.CASCADE, related_name='menues')
@@ -63,6 +84,10 @@ class Menue(models.Model):
def __str__(self): def __str__(self):
return f"{self.tag.datum}: {self.gericht.name} ({self.preis}€)" return f"{self.tag.datum}: {self.gericht.name} ({self.preis}€)"
class Meta:
verbose_name = "Menü"
verbose_name_plural = "Menüs"
class Bestellung(models.Model): class Bestellung(models.Model):
"""Eine abgeschlossene Bestellung eines Nutzers.""" """Eine abgeschlossene Bestellung eines Nutzers."""
STATUS_CHOICES = [ STATUS_CHOICES = [
@@ -81,3 +106,8 @@ class Bestellung(models.Model):
def __str__(self): def __str__(self):
return f"Bestellung {self.id} von {self.person.user.username}" return f"Bestellung {self.id} von {self.person.user.username}"
class Meta:
verbose_name = "Bestellung"
verbose_name_plural = "Bestellungen"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

173375
re Normal file

File diff suppressed because it is too large Load Diff

173375
sys Normal file

File diff suppressed because it is too large Load Diff