Fix #2456 -- Allow shredding instantly after event end (#2462)

This commit is contained in:
Jonathan Weth
2022-02-14 15:57:38 +01:00
committed by GitHub
parent 61cef87c9d
commit 5e1cff53b4
2 changed files with 20 additions and 18 deletions

View File

@@ -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

View File

@@ -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)