feat: derive event lifecycle status from dates and flags
Replace persisted event statuses with publication and cancellation flags, and compute public lifecycle labels from event timing and registration capacity. Keep filters, registration checks, and profile responses aligned with the derived status.
This commit is contained in:
@@ -19,24 +19,23 @@ def test_event_admin_formats_empty_price_and_capacity():
|
||||
assert model_admin.is_registration_open_display(event)
|
||||
|
||||
|
||||
def test_event_admin_status_actions_update_selection(mocker):
|
||||
def test_event_admin_publication_and_cancellation_actions_update_selection(mocker):
|
||||
model_admin = EventAdmin(Event, admin.site)
|
||||
mocker.patch.object(model_admin, "message_user")
|
||||
cancel_checkouts = mocker.patch("apps.events.admin.cancel_event_checkouts")
|
||||
queryset = mocker.Mock()
|
||||
queryset.count.return_value = 2
|
||||
for action, status in (
|
||||
(model_admin.make_published, Event.StatusChoices.PUBLISHED),
|
||||
(model_admin.make_draft, Event.StatusChoices.DRAFT),
|
||||
(model_admin.make_completed, Event.StatusChoices.COMPLETED),
|
||||
for action, field_value in (
|
||||
(model_admin.make_published, {"is_published": True}),
|
||||
(model_admin.make_draft, {"is_published": False}),
|
||||
):
|
||||
action(SimpleNamespace(), queryset)
|
||||
queryset.update.assert_called_with(status=status)
|
||||
queryset.update.assert_called_with(**field_value)
|
||||
|
||||
published = SimpleNamespace(status=Event.StatusChoices.PUBLISHED, pk=10, save=mocker.Mock())
|
||||
already_cancelled = SimpleNamespace(status=Event.StatusChoices.CANCELLED, pk=11, save=mocker.Mock())
|
||||
published = SimpleNamespace(is_cancelled=False, pk=10, save=mocker.Mock())
|
||||
already_cancelled = SimpleNamespace(is_cancelled=True, pk=11, save=mocker.Mock())
|
||||
model_admin.make_cancelled(SimpleNamespace(), [published, already_cancelled])
|
||||
|
||||
published.save.assert_called_once_with(update_fields=["status"])
|
||||
published.save.assert_called_once_with(update_fields=["is_cancelled", "updated_at"])
|
||||
already_cancelled.save.assert_not_called()
|
||||
cancel_checkouts.assert_called_once_with(published.pk)
|
||||
|
||||
Reference in New Issue
Block a user