diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9031276 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +__pycache__/ +*.pyc +*.sqlite3 + diff --git a/.kdev4/SGTMensa.kdev4 b/.kdev4/SGTMensa.kdev4 new file mode 100644 index 0000000..7c48fae --- /dev/null +++ b/.kdev4/SGTMensa.kdev4 @@ -0,0 +1,5 @@ +[Buildset] +BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x10\x00S\x00G\x00T\x00M\x00e\x00n\x00s\x00a) + +[Project] +VersionControlSupport=kdevgit diff --git a/db.sqlite3 b/db.sqlite3 deleted file mode 100644 index 490c930..0000000 Binary files a/db.sqlite3 and /dev/null differ diff --git a/mensa_app/__pycache__/__init__.cpython-312.pyc b/mensa_app/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index d854d3c..0000000 Binary files a/mensa_app/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/__init__.cpython-314.pyc b/mensa_app/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index 46c3669..0000000 Binary files a/mensa_app/__pycache__/__init__.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/admin.cpython-312.pyc b/mensa_app/__pycache__/admin.cpython-312.pyc deleted file mode 100644 index d91dd7d..0000000 Binary files a/mensa_app/__pycache__/admin.cpython-312.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/admin.cpython-314.pyc b/mensa_app/__pycache__/admin.cpython-314.pyc deleted file mode 100644 index 5d48f81..0000000 Binary files a/mensa_app/__pycache__/admin.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/apps.cpython-312.pyc b/mensa_app/__pycache__/apps.cpython-312.pyc deleted file mode 100644 index 0c46525..0000000 Binary files a/mensa_app/__pycache__/apps.cpython-312.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/apps.cpython-314.pyc b/mensa_app/__pycache__/apps.cpython-314.pyc deleted file mode 100644 index 13e3337..0000000 Binary files a/mensa_app/__pycache__/apps.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/models.cpython-312.pyc b/mensa_app/__pycache__/models.cpython-312.pyc deleted file mode 100644 index a884738..0000000 Binary files a/mensa_app/__pycache__/models.cpython-312.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/models.cpython-314.pyc b/mensa_app/__pycache__/models.cpython-314.pyc deleted file mode 100644 index 53d1c05..0000000 Binary files a/mensa_app/__pycache__/models.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/__pycache__/tests.cpython-312.pyc b/mensa_app/__pycache__/tests.cpython-312.pyc deleted file mode 100644 index 5efc8ba..0000000 Binary files a/mensa_app/__pycache__/tests.cpython-312.pyc and /dev/null differ diff --git a/mensa_app/customer_order_process_diagram_v1.pdf b/mensa_app/customer_order_process_diagram_v1.pdf new file mode 100644 index 0000000..fab8f5c Binary files /dev/null and b/mensa_app/customer_order_process_diagram_v1.pdf differ diff --git a/mensa_app/customer_order_process_v1.puml b/mensa_app/customer_order_process_v1.puml new file mode 100644 index 0000000..10d483d --- /dev/null +++ b/mensa_app/customer_order_process_v1.puml @@ -0,0 +1,65 @@ +@startuml + +' Teilnehmer – Standard‑Icons +actor Student as "Student" +participant Browser as "Browser" +participant WebsiteServer as "Website Server" +database OrderDB as "Order DB" +participant OrderService as "Order Service" +participant InventoryService as "Inventory Service" +participant KitchenDisplaySystem as "Kitchen Display" +participant NotificationService as "Notification Service" + +' ---------- Login ---------- +Student -> Browser : Öffnet die Webseite +Browser -> WebsiteServer : GET /login +WebsiteServer --> Browser : Liefert Login‑Seite +Student -> Browser : Gibt Benutzerdaten ein und schickt Formular +Browser -> WebsiteServer : POST /login\n{username, password} +WebsiteServer --> OrderService : Authentifiziere User +OrderService --> WebsiteServer : OK (Session‑Token) +WebsiteServer --> Browser : Setzt Session‑Cookie & leitet zur Menüseite + +' ---------- Menü auswählen ---------- +Student -> Browser : Wählt Speisen aus dem Menü +Browser -> WebsiteServer : GET /menu\n{session} +WebsiteServer --> OrderDB : Liefert aktuelle Menüpunkte +OrderDB --> WebsiteServer : Menüdaten +WebsiteServer --> Browser : Zeigt Menü + +' ---------- Artikel zum Warenkorb hinzufügen ---------- +loop Für jeden gewählten Artikel + Student -> Browser : Klickt „In den Warenkorb“ + Browser -> OrderService : POST /cart/add\n{session, articleID} + OrderService -> OrderDB : Update Cart (Add Item) + OrderDB --> OrderService : OK + OrderService --> Browser : Rückmeldung "Artikel hinzugefügt" +end + +' ---------- Bestellung prüfen ---------- +Student -> Browser : Öffnet Warenkorb und prüft Bestellübersicht +Browser -> OrderService : GET /cart\n{session} +OrderService -> OrderDB : Liefert aktuelle Cart‑Daten +OrderDB --> OrderService : Cart‑Details +OrderService --> Browser : Zeigt Cart‑Übersicht + +' ---------- Checkout (ohne Bezahlung) ---------- +Student -> Browser : Klicke „Zur Kasse“ +Browser -> WebsiteServer : GET /checkout\n{session} +WebsiteServer --> NotificationService : Sende “Bestellung anstehend” (Optional) +NotificationService --> Browser : Bestätigungsnachricht +Student -> Browser : Gibt Zahlungsinformationen für Bezahlung vor Ort ein und schickt Formular +Browser -> OrderService : POST /checkout/confirm\n{session, paymentMethod="VorOrt"} +OrderService --> OrderDB : Speichere Order & set Status “Pending Payment” +OrderDB --> OrderService : OK +OrderService --> KitchenDisplaySystem : Sende Order‑Details (Zubereitung) +KitchenDisplaySystem --> Browser : Zeigt „Bestellung in Bearbeitung“ +OrderService -> InventoryService : Update Bestand +InventoryService --> OrderService : OK +OrderService --> NotificationService : Sende “Bestellung bestätigt” (Email/SMS) + +' ---------- Fertigstellung ---------- +Student -> Browser : Empfängt Benachrichtigung “Ihr Essen ist fertig” +Browser -> KitchenDisplaySystem : Optional „Abholung bestätigen“ + +@enduml \ No newline at end of file diff --git a/mensa_app/migrations/0005_alter_bestellung_id_alter_gericht_id_and_more.py b/mensa_app/migrations/0005_alter_bestellung_id_alter_gericht_id_and_more.py new file mode 100644 index 0000000..6db99ad --- /dev/null +++ b/mensa_app/migrations/0005_alter_bestellung_id_alter_gericht_id_and_more.py @@ -0,0 +1,72 @@ +# Generated by Django 5.2.14 on 2026-05-15 09:28 + +import datetime +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mensa_app', '0004_alter_gericht_time_creation_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='bestellung', + name='id', + field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='gericht', + name='id', + field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='gericht', + name='time_creation', + field=models.TimeField(default=datetime.datetime(2026, 5, 15, 9, 28, 5, 292454)), + ), + migrations.AlterField( + model_name='gericht', + name='time_last_change', + field=models.TimeField(default=datetime.datetime(2026, 5, 15, 9, 28, 5, 292454)), + ), + migrations.AlterField( + model_name='kategorie', + name='id', + field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='menue', + name='id', + field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='person', + name='id', + field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.AlterField( + model_name='speiseplantag', + name='id', + field=models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + migrations.CreateModel( + name='Bewertung', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('sterne', models.IntegerField(choices=[(1, '★☆☆☆☆'), (2, '★★☆☆☆'), (3, '★★★☆☆'), (4, '★★★★☆'), (5, '★★★★★')], default=3)), + ('kommentar', models.TextField(blank=True, null=True)), + ('datum', models.DateTimeField(auto_now_add=True)), + ('ist_verifiziert', models.BooleanField(default=False, help_text='Wird automatisch auf True gesetzt, wenn eine bezahlte Bestellung vorliegt.')), + ('gericht', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bewertungen', to='mensa_app.gericht')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bewertungen', to='mensa_app.person')), + ], + options={ + 'verbose_name': 'Bewertung', + 'verbose_name_plural': 'Bewertungen', + 'unique_together': {('user', 'gericht')}, + }, + ), + ] diff --git a/mensa_app/migrations/__pycache__/0001_initial.cpython-312.pyc b/mensa_app/migrations/__pycache__/0001_initial.cpython-312.pyc deleted file mode 100644 index 2bc9c39..0000000 Binary files a/mensa_app/migrations/__pycache__/0001_initial.cpython-312.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0001_initial.cpython-314.pyc b/mensa_app/migrations/__pycache__/0001_initial.cpython-314.pyc deleted file mode 100644 index 190f65f..0000000 Binary files a/mensa_app/migrations/__pycache__/0001_initial.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0002_alter_bestellung_options_alter_gericht_options_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0002_alter_bestellung_options_alter_gericht_options_and_more.cpython-314.pyc deleted file mode 100644 index cae7689..0000000 Binary files a/mensa_app/migrations/__pycache__/0002_alter_bestellung_options_alter_gericht_options_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0003_schulwoche_alter_gericht_time_creation_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0003_schulwoche_alter_gericht_time_creation_and_more.cpython-314.pyc deleted file mode 100644 index 680e53d..0000000 Binary files a/mensa_app/migrations/__pycache__/0003_schulwoche_alter_gericht_time_creation_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0004_alter_gericht_time_creation_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0004_alter_gericht_time_creation_and_more.cpython-314.pyc deleted file mode 100644 index c33415e..0000000 Binary files a/mensa_app/migrations/__pycache__/0004_alter_gericht_time_creation_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0005_alter_gericht_time_creation_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0005_alter_gericht_time_creation_and_more.cpython-314.pyc deleted file mode 100644 index fd40f79..0000000 Binary files a/mensa_app/migrations/__pycache__/0005_alter_gericht_time_creation_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0006_alter_gericht_time_creation_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0006_alter_gericht_time_creation_and_more.cpython-314.pyc deleted file mode 100644 index 97ffdcf..0000000 Binary files a/mensa_app/migrations/__pycache__/0006_alter_gericht_time_creation_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0007_alter_gerichtbild_options_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0007_alter_gerichtbild_options_and_more.cpython-314.pyc deleted file mode 100644 index 564b9c6..0000000 Binary files a/mensa_app/migrations/__pycache__/0007_alter_gerichtbild_options_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0008_alter_gericht_time_creation_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0008_alter_gericht_time_creation_and_more.cpython-314.pyc deleted file mode 100644 index 51ee7bd..0000000 Binary files a/mensa_app/migrations/__pycache__/0008_alter_gericht_time_creation_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/0009_alter_gericht_time_creation_and_more.cpython-314.pyc b/mensa_app/migrations/__pycache__/0009_alter_gericht_time_creation_and_more.cpython-314.pyc deleted file mode 100644 index 9d6fef3..0000000 Binary files a/mensa_app/migrations/__pycache__/0009_alter_gericht_time_creation_and_more.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/__init__.cpython-312.pyc b/mensa_app/migrations/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index bdc1992..0000000 Binary files a/mensa_app/migrations/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/mensa_app/migrations/__pycache__/__init__.cpython-314.pyc b/mensa_app/migrations/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index cc7d1ea..0000000 Binary files a/mensa_app/migrations/__pycache__/__init__.cpython-314.pyc and /dev/null differ diff --git a/mensa_app/templates/mensa_app/bestell_summary.html b/mensa_app/templates/mensa_app/bestell_summary.html new file mode 100644 index 0000000..67c693b --- /dev/null +++ b/mensa_app/templates/mensa_app/bestell_summary.html @@ -0,0 +1,81 @@ + + + + + + Bestell-Zusammenfassung + + + + +
+ +
+
+

Bestell-Check für den {{ target_date|date:"d.m.Y" }}

+ +
+
+ + +
+
+
+
+
Gesamtanzahl Bestellungen
+

{{ total_bestellungen }}

+
+
+
+
+
+
+
Erwarteter Umsatz
+

{{ total_umsatz|floatformat:2 }} €

+
+
+
+
+ + +
+
Details pro Gericht
+
+ + + + + + + + + + + {% for stat in summary_stats %} + + + + + + + {% empty %} + + + + {% endfor %} + +
GerichtKategorieMengeUmsatz
{{ stat.menue__gericht__name }}{{ stat.menue__gericht__kategorie__name }}{{ stat.anzahl }}{{ stat.umsatz|floatformat:2 }} €
Keine Bestellungen für diesen Tag vorhanden.
+
+
+ +
+ ← Zurück zur Speisekarte +
+
+ + + diff --git a/mensa_app/templates/mensa_app/gericht_list.html b/mensa_app/templates/mensa_app/gericht_list.html new file mode 100644 index 0000000..788bf21 --- /dev/null +++ b/mensa_app/templates/mensa_app/gericht_list.html @@ -0,0 +1,55 @@ + + + + + + Mensa-Speisekarte + + + + + +
+
+
+
+
+

Unsere Speisekarte

+
+
+ + + + + + + + + + {% for gericht in alle_gerichte %} + + + + + + {% empty %} + + + + {% endfor %} + +
GerichtKategorieStatus
{{ gericht.name }}{{ gericht.kategorie.name }} + {% if gericht.ist_dauerangebot %} + Dauerangebot + {% else %} + Tagesangebot + {% endif %} +
Keine Gerichte im System gefunden.
+
+
+
+
+
+ + + diff --git a/mensa_app/templates/mensa_app/speiseplan.html b/mensa_app/templates/mensa_app/speiseplan.html new file mode 100644 index 0000000..e5918a1 --- /dev/null +++ b/mensa_app/templates/mensa_app/speiseplan.html @@ -0,0 +1,92 @@ + + + + + + Mensa Speiseplan + + + + +
+
+
+ + +
+
+

Speiseplan für den
{{ target_date|date:"d.m.Y" }}

+ +
+ + {% if prev_date %} + « Vorheriger Tag + {% else %} + + {% endif %} + + + Heute + + + {% if next_date %} + Nächster Tag » + {% else %} + + {% endif %} +
+
+
+ + +
+
Tagesmenüs
+
+ + + + + + + + + + {% for menue in menues_day %} + + + + + + {% empty %} + + + + {% endfor %} + +
GerichtKategoriePreis
{{ menue.gericht.name }}{{ menue.gericht.kategorie.name }}{{ menue.preis|floatformat:2 }} €
Keine Tagesmenüs für diesen Tag geplant.
+
+
+ + +
+
Immer verfügbar (Dauerangebote)
+
+
    + {% for gericht in dauerangebote %} +
  • + {{ gericht.name }} + Verfügbar +
  • + {% empty %} +
  • Momentan keine Dauerangebote.
  • + {% endfor %} +
+
+
+ +
+
+
+ + + diff --git a/mensa_app/urls.py b/mensa_app/urls.py new file mode 100644 index 0000000..c59a541 --- /dev/null +++ b/mensa_app/urls.py @@ -0,0 +1,10 @@ +from django.urls import path +from .views import GerichtListView +from .views import SpeiseplanView # Achte auf den neuen Klassennamen! +from .views import BestellSummaryView + +urlpatterns = [ + path('speisekarte/', GerichtListView.as_view(), name='speisekarte'), + path('speiseplan/', SpeiseplanView.as_view(), name='speiseplan'), + path('bestellungen/summary/', BestellSummaryView.as_view(), name='bestell_summary'), +] diff --git a/mensa_app/views.py b/mensa_app/views.py index 91ea44a..662af6f 100644 --- a/mensa_app/views.py +++ b/mensa_app/views.py @@ -1,3 +1,101 @@ from django.shortcuts import render # Create your views here. +from django.views.generic import ListView +from .models import Gericht + +class GerichtListView(ListView): + model = Gericht + template_name = 'mensa_app/gericht_liste.html' # Der Pfad zum Template + context_object_name = 'alle_gerichte' # Der Name, den wir im Template nutzen + +from django.views.generic import TemplateView +from django.utils import timezone +from datetime import datetime +from .models import Menue, Gericht, SpeiseplanTag + +class SpeiseplanView(TemplateView): + template_name = 'mensa_app/speiseplan.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + # 1. Datum aus der URL holen (z.B. ?datum=2023-10-27) + # Wenn kein Datum angegeben ist, nehmen wir heute. + date_str = self.request.GET.get('datum') + if date_str: + try: + target_date = datetime.strptime(date_str, '%Y-%m-%d').date() + except ValueError: + target_date = timezone.glob.now().date() + else: + target_date = timezone.now().date() + + # 2. Menüs für diesen spezifischen Tag laden + # Wir suchen alle Menüs, deren Tag das target_date hat + context['target_date'] = target_date + context['menues_day'] = Menue.objects.filter(tag__datum=target_date) + + # 3. Dauerangebote laden (unabhängig vom Tag) + context['dauerangebote'] = Gericht.objects.filter(ist_dauerangebot=True) + + # 4. Pager-Logik: Vorherigen und nächsten Tag finden + # Wir suchen in der Tabelle SpeiseplanTag nach dem Tag davor/danach + prev_tag = SpeiseplanTag.objects.filter(datum__lt=target_date).order_by('-datum').first() + next_tag = SpeiseplanTag.objects.filter(datum__gt=target_date).order_by('datum').first() + + context['prev_date'] = prev_tag.datum.strftime('%Y-%m-%d') if prev_tag else None + context['next_date'] = next_tag.datum.strftime('%Y-%m-%d') if next_tag else None + + return context + + +from django.views.generic import TemplateView +from django.utils import timezone +from django.db.models import Count, Sum +from datetime import datetime +from .models import Bestellung, SpeiseplanTag, Gericht, Menue + +class BestellSummaryView(TemplateView): + template_name = 'mensa_app/bestell_summary.html' + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + # 1. Datum aus der URL holen (wie beim Speiseplan) + date_str = self.request.GET. get('datum') + if date_str: + try: + target_date = datetime.strptime(date_str, '%Y-%m-%d').date() + except ValueError: + target_date = timezone.now().date() + else: + target_date = timezone.now().date() + + context['target_date'] = target_date + + # 2. Aggregation: Bestellungen nach Gericht gruppieren + # Wir suchen alle Bestellungen, deren Menü am target_date stattfindet + summary_stats = ( + Bestellung.objects.filter(menue__tag__datum=target_date) + .values('menue__gericht__name', 'menue__gericht__kategorie__name') # Gruppierung nach Name & Kategorie + .annotate( + anzahl=Count('id'), # Wie viele wurden bestellt? + umsatz=Sum('menue__preis') # Was macht das für einen Umsatz? + ) + .order_by('menue__gericht__name') + ) + context['summary_stats'] = summary_stats + + # 3. Pager-Logik (identisch mit dem Speiseplan-View) + prev_tag = SpeiseplanTag.objects.filter(datum__lt=target_date).order_by('-datum').first() + next_tag = SpeiseplanTag.objects.filter(datum__gt=target_date).order_by('datum').first() + + context['prev_date'] = prev_tag.datum.strftime('%Y-%m-%d') if prev_tag else None + context['next_date'] = next_tag.datum.strftime('%Y-%m-%d') if next_tag else None + + # 4. Gesamtzahlen für die Übersicht + context['total_bestellungen'] = Bestellung.objects.filter(menue__tag__datum=target_date).count() + context['total_umsatz'] = Bestellung.objects.filter(menue__tag__datum=target_date).aggregate(Sum('menue__preis'))['menue__preis__sum'] or 0 + + return context diff --git a/mensa_core/__pycache__/__init__.cpython-312.pyc b/mensa_core/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 52c5866..0000000 Binary files a/mensa_core/__pycache__/__init__.cpython-312.pyc and /dev/null differ diff --git a/mensa_core/__pycache__/__init__.cpython-314.pyc b/mensa_core/__pycache__/__init__.cpython-314.pyc deleted file mode 100644 index f6c0a1c..0000000 Binary files a/mensa_core/__pycache__/__init__.cpython-314.pyc and /dev/null differ diff --git a/mensa_core/__pycache__/settings.cpython-312.pyc b/mensa_core/__pycache__/settings.cpython-312.pyc deleted file mode 100644 index c09f901..0000000 Binary files a/mensa_core/__pycache__/settings.cpython-312.pyc and /dev/null differ diff --git a/mensa_core/__pycache__/settings.cpython-314.pyc b/mensa_core/__pycache__/settings.cpython-314.pyc deleted file mode 100644 index ec7042a..0000000 Binary files a/mensa_core/__pycache__/settings.cpython-314.pyc and /dev/null differ diff --git a/mensa_core/__pycache__/urls.cpython-312.pyc b/mensa_core/__pycache__/urls.cpython-312.pyc deleted file mode 100644 index f3f1d72..0000000 Binary files a/mensa_core/__pycache__/urls.cpython-312.pyc and /dev/null differ diff --git a/mensa_core/__pycache__/urls.cpython-314.pyc b/mensa_core/__pycache__/urls.cpython-314.pyc deleted file mode 100644 index 980ac10..0000000 Binary files a/mensa_core/__pycache__/urls.cpython-314.pyc and /dev/null differ diff --git a/mensa_core/__pycache__/wsgi.cpython-312.pyc b/mensa_core/__pycache__/wsgi.cpython-312.pyc deleted file mode 100644 index 7526c10..0000000 Binary files a/mensa_core/__pycache__/wsgi.cpython-312.pyc and /dev/null differ diff --git a/mensa_core/__pycache__/wsgi.cpython-314.pyc b/mensa_core/__pycache__/wsgi.cpython-314.pyc deleted file mode 100644 index ebd799d..0000000 Binary files a/mensa_core/__pycache__/wsgi.cpython-314.pyc and /dev/null differ diff --git a/mensa_core/urls.py b/mensa_core/urls.py index 9bf908e..c7c1527 100644 --- a/mensa_core/urls.py +++ b/mensa_core/urls.py @@ -15,10 +15,12 @@ Including another URLconf 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin -from django.urls import path +from django.urls import path, include from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), + path('', include('mensa_app.urls')), # Schaltet die App-URLs frei ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) +