From 5e1cff53b46a5e352131a02244916c8f8dbe4cd0 Mon Sep 17 00:00:00 2001 From: Jonathan Weth Date: Mon, 14 Feb 2022 15:57:38 +0100 Subject: [PATCH] Fix #2456 -- Allow shredding instantly after event end (#2462) --- src/pretix/base/shredder.py | 9 ++++----- src/tests/base/test_shredders.py | 29 ++++++++++++++++------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/pretix/base/shredder.py b/src/pretix/base/shredder.py index 7a9476e2cb..552ae08607 100644 --- a/src/pretix/base/shredder.py +++ b/src/pretix/base/shredder.py @@ -34,7 +34,6 @@ import json import os -from datetime import timedelta from typing import List, Tuple from django.db import transaction @@ -70,11 +69,11 @@ def shred_constraints(event: Event): max_fromto=Greatest(Max('date_to'), Max('date_from')) ) max_date = max_date['max_fromto'] or max_date['max_to'] or max_date['max_from'] - if max_date is not None and max_date > now() - timedelta(days=30): - return _('Your event needs to be over for at least 30 days to use this feature.') + if max_date is not None and max_date >= now(): + return _('Your event needs to be over to use this feature.') else: - if (event.date_to or event.date_from) > now() - timedelta(days=30): - return _('Your event needs to be over for at least 30 days to use this feature.') + if (event.date_to or event.date_from) >= now(): + return _('Your event needs to be over to use this feature.') if event.live: return _('Your ticket shop needs to be offline to use this feature.') return None diff --git a/src/tests/base/test_shredders.py b/src/tests/base/test_shredders.py index 243a3d1ca0..97cfdbd5c2 100644 --- a/src/tests/base/test_shredders.py +++ b/src/tests/base/test_shredders.py @@ -380,31 +380,34 @@ def test_shred_constraint_offline(event): @pytest.mark.django_db -def test_shred_constraint_30_days(event): +def test_shred_constraint_after_event(event): event.live = False - event.date_from = now() - timedelta(days=32) - event.date_to = now() - timedelta(days=32) + now_dt = now() + event.date_from = now_dt - timedelta(hours=1) + event.date_to = now_dt - timedelta(hours=1) assert shred_constraints(event) is None - event.date_from = now() - timedelta(days=22) - event.date_to = now() - timedelta(days=22) - assert shred_constraints(event) - event.date_from = now() - timedelta(days=32) - event.date_to = now() - timedelta(days=22) + event.date_from = now_dt - timedelta(hours=1) + event.date_to = now_dt - timedelta(hours=1) + assert shred_constraints(event) is None + event.date_from = now_dt - timedelta(hours=1) + event.date_to = now_dt + timedelta(hours=1) assert shred_constraints(event) @pytest.mark.django_db -def test_shred_constraint_30_days_subevents(event): +def test_shred_constraint_after_event_subevents(event): event.has_subevents = True event.live = False + now_dt = now() + event.subevents.create( - date_from=now() - timedelta(days=32), - date_to=now() - timedelta(days=32) + date_from=now_dt - timedelta(hours=2), + date_to=now_dt - timedelta(hours=1) ) assert shred_constraints(event) is None event.subevents.create( - date_from=now() - timedelta(days=22), - date_to=now() - timedelta(days=32) + date_from=now_dt - timedelta(hours=1), + date_to=now_dt + timedelta(hours=1) ) assert shred_constraints(event)