generated from bisco/codex-bootstrap
fix: simplify reservation admin labels
This commit is contained in:
@@ -44,7 +44,9 @@ class Reservation(TimeStampedModel):
|
|||||||
]
|
]
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.name} ({self.party_size}) for {self.performance}"
|
if self.party_size > 1:
|
||||||
|
return f"{self.name} ({self.party_size})"
|
||||||
|
return self.name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_confirmed(self):
|
def is_confirmed(self):
|
||||||
|
|||||||
@@ -160,3 +160,20 @@ class ReservationAdminTests(TestCase):
|
|||||||
check_in = CheckIn.objects.get(reservation=reservation)
|
check_in = CheckIn.objects.get(reservation=reservation)
|
||||||
self.assertEqual(check_in.checked_in_by, self.admin_user)
|
self.assertEqual(check_in.checked_in_by, self.admin_user)
|
||||||
self.assertEqual(check_in.source, CheckIn.Source.MANUAL)
|
self.assertEqual(check_in.source, CheckIn.Source.MANUAL)
|
||||||
|
|
||||||
|
def test_reservation_string_is_concise_without_performance_details(self):
|
||||||
|
single_guest_reservation = Reservation.objects.create(
|
||||||
|
performance=self.performance,
|
||||||
|
name="Maria Rossi",
|
||||||
|
email="maria@example.com",
|
||||||
|
party_size=1,
|
||||||
|
)
|
||||||
|
group_reservation = Reservation.objects.create(
|
||||||
|
performance=self.performance,
|
||||||
|
name="Luca Bianchi",
|
||||||
|
email="luca@example.com",
|
||||||
|
party_size=3,
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(str(single_guest_reservation), "Maria Rossi")
|
||||||
|
self.assertEqual(str(group_reservation), "Luca Bianchi (3)")
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from .models import CheckIn
|
|||||||
@admin.register(CheckIn)
|
@admin.register(CheckIn)
|
||||||
class CheckInAdmin(admin.ModelAdmin):
|
class CheckInAdmin(admin.ModelAdmin):
|
||||||
list_display = (
|
list_display = (
|
||||||
"reservation",
|
"reservation_guest_name",
|
||||||
"performance",
|
"performance",
|
||||||
"checked_in_at",
|
"checked_in_at",
|
||||||
"checked_in_by",
|
"checked_in_by",
|
||||||
@@ -25,6 +25,10 @@ class CheckInAdmin(admin.ModelAdmin):
|
|||||||
list_select_related = ("reservation", "reservation__performance", "checked_in_by")
|
list_select_related = ("reservation", "reservation__performance", "checked_in_by")
|
||||||
autocomplete_fields = ("reservation", "checked_in_by")
|
autocomplete_fields = ("reservation", "checked_in_by")
|
||||||
|
|
||||||
|
@admin.display(description="Reservation", ordering="reservation__name")
|
||||||
|
def reservation_guest_name(self, obj):
|
||||||
|
return obj.reservation.name
|
||||||
|
|
||||||
@admin.display(description="Performance")
|
@admin.display(description="Performance")
|
||||||
def performance(self, obj):
|
def performance(self, obj):
|
||||||
return obj.reservation.performance
|
return obj.reservation.performance
|
||||||
|
|||||||
56
backend/checkins/test_admin.py
Normal file
56
backend/checkins/test_admin.py
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
|
from django.contrib import admin
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.test import TestCase
|
||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
|
from bookings.models import Reservation
|
||||||
|
from checkins.admin import CheckInAdmin
|
||||||
|
from checkins.models import CheckIn
|
||||||
|
from shows.models import Performance, Show, Venue
|
||||||
|
|
||||||
|
|
||||||
|
class CheckInAdminTests(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
user_model = get_user_model()
|
||||||
|
self.admin_user = user_model.objects.create_superuser(
|
||||||
|
username="admin-checkins",
|
||||||
|
email="admin-checkins@example.com",
|
||||||
|
password="password123",
|
||||||
|
)
|
||||||
|
self.show = Show.objects.create(
|
||||||
|
title="Open Stage",
|
||||||
|
slug="open-stage-checkins-admin",
|
||||||
|
is_published=True,
|
||||||
|
)
|
||||||
|
self.venue = Venue.objects.create(
|
||||||
|
name="AzioneLab Theatre",
|
||||||
|
slug="azionelab-theatre-checkins-admin",
|
||||||
|
address="Via Example 1",
|
||||||
|
city="Rome",
|
||||||
|
)
|
||||||
|
self.performance = Performance.objects.create(
|
||||||
|
show=self.show,
|
||||||
|
venue=self.venue,
|
||||||
|
starts_at=timezone.now() + timedelta(days=7),
|
||||||
|
room_capacity=20,
|
||||||
|
)
|
||||||
|
self.reservation = Reservation.objects.create(
|
||||||
|
performance=self.performance,
|
||||||
|
name="Maria Rossi",
|
||||||
|
email="maria@example.com",
|
||||||
|
party_size=3,
|
||||||
|
status=Reservation.Status.CONFIRMED,
|
||||||
|
confirmed_at=timezone.now(),
|
||||||
|
)
|
||||||
|
self.check_in = CheckIn.objects.create(
|
||||||
|
reservation=self.reservation,
|
||||||
|
checked_in_at=timezone.now(),
|
||||||
|
checked_in_by=self.admin_user,
|
||||||
|
source=CheckIn.Source.MANUAL,
|
||||||
|
)
|
||||||
|
self.model_admin = CheckInAdmin(CheckIn, admin.site)
|
||||||
|
|
||||||
|
def test_reservation_column_shows_guest_name_only(self):
|
||||||
|
self.assertEqual(self.model_admin.reservation_guest_name(self.check_in), "Maria Rossi")
|
||||||
Reference in New Issue
Block a user