diff --git a/chartacapsa/gebiete/admin.py b/chartacapsa/gebiete/admin.py index 8c38f3f..cd891d5 100644 --- a/chartacapsa/gebiete/admin.py +++ b/chartacapsa/gebiete/admin.py @@ -1,3 +1,26 @@ from django.contrib import admin +from .models import Person, Gebiet -# Register your models here. +@admin.register(Person) +class PersonAdmin(admin.ModelAdmin): + list_display = ('name', 'telefon') + search_fields = ('name',) + +@admin.register(Gebiet) +class GebietAdmin(admin.ModelAdmin): + # Welche Spalten werden in der Übersicht angezeigt? + list_display = ('nummer', 'name', 'aktuell_vergeben_an', 'zuletzt_bearbeitet', 'ist_frei') + + # Welche Felder sind durchsuchbar? + search_fields = ('nummer', 'name', 'beschreibung') + + # Filter auf der rechten Seite + list_filter = ('zuletzt_bearbeitet', 'aktuell_vergeben_an') + + # Macht es möglich, direkt aus der Liste heraus den Besitzer zu ändern + list_editable = ('aktuell_vergeben_an',) + + # Eine berechnete Spalte, um schnell zu sehen, ob das Gebiet frei ist + @admin.display(boolean=True, description="Frei?") + def ist_frei(self, obj): + return obj.aktuell_vergeben_an is None diff --git a/chartacapsa/gebiete/models.py b/chartacapsa/gebiete/models.py index 71a8362..7ff5420 100644 --- a/chartacapsa/gebiete/models.py +++ b/chartacapsa/gebiete/models.py @@ -1,3 +1,50 @@ from django.db import models # Create your models here. +from django.db import models +import datetime + +class Person(models.Model): + name = models.CharField(max_length=100, verbose_name="Name") + telefon = models.CharField(max_length=20, blank=True, verbose_name="Telefonnummer") + + class Meta: + verbose_name = "Person" + verbose_name_plural = "Personen" + + def __str__(self): + return self.name + +class Gebiet(models.Model): + nummer = models.IntegerField(unique=True, verbose_name="Gebiets-Nummer") + name = models.CharField(max_length=150, verbose_name="Name/Bezeichnung") + beschreibung = models.TextField(blank=True, verbose_name="Beschreibung/Notizen") + + aktuell_vergeben_an = models.ForeignKey( + Person, + on_delete=models.SET_NULL, + null=True, + blank=True, + related_name="gebiete", + verbose_name="Aktuell vergeben an" + ) + + zuletzt_bearbeitet = models.DateField( + null=True, + blank=True, + verbose_name="Zuletzt bearbeitet" + ) + + karte = models.ImageField( + upload_to='gebietskarten/', + blank=True, + verbose_name="Gebietskarte (Bild)" + ) + + class Meta: + verbose_name = "Gebiet" + verbose_name_plural = "Gebiete" + ordering = ['nummer'] + + def __str__(self): + return f"Gebiet {self.nummer}: {self.name}"