agendas: really check publication date for recurring events (#54430)
This commit is contained in:
parent
e30d44cfa2
commit
4e89a1d568
|
@ -685,7 +685,10 @@ class Agenda(models.Model):
|
|||
recurring_events = self.prefetched_recurring_events
|
||||
exceptions = self.prefetched_exceptions
|
||||
else:
|
||||
recurring_events = self.event_set.filter(recurrence_rule__isnull=False)
|
||||
recurring_events = self.event_set.filter(
|
||||
Q(publication_date__isnull=True) | Q(publication_date__lte=localtime(now()).date()),
|
||||
recurrence_rule__isnull=False,
|
||||
)
|
||||
exceptions = self.get_recurrence_exceptions(min_start, max_start)
|
||||
|
||||
for event in recurring_events:
|
||||
|
@ -1520,8 +1523,6 @@ class Event(models.Model):
|
|||
url=self.url,
|
||||
)
|
||||
|
||||
if self.publication_date and self.publication_date > min_datetime.date():
|
||||
min_datetime = make_aware(datetime.datetime.combine(self.publication_date, datetime.time(0, 0)))
|
||||
if self.recurrence_end_date:
|
||||
self.recurrence_rule['until'] = datetime.datetime.combine(
|
||||
self.recurrence_end_date, datetime.time(0, 0)
|
||||
|
|
|
@ -587,7 +587,10 @@ class Agendas(APIView):
|
|||
cancelled=False,
|
||||
start_datetime__gte=localtime(now()),
|
||||
).order_by()
|
||||
recurring_event_queryset = Event.objects.filter(recurrence_rule__isnull=False)
|
||||
recurring_event_queryset = Event.objects.filter(
|
||||
Q(publication_date__isnull=True) | Q(publication_date__lte=localtime(now()).date()),
|
||||
recurrence_rule__isnull=False,
|
||||
)
|
||||
exceptions_desk = Desk.objects.filter(slug='_exceptions_holder').prefetch_related(
|
||||
'unavailability_calendars'
|
||||
)
|
||||
|
|
|
@ -6364,14 +6364,14 @@ def test_recurring_events_api(app, user, freezer):
|
|||
base_event.publication_date = now().replace(day=27)
|
||||
base_event.save()
|
||||
resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug)
|
||||
assert len(resp.json['data']) == 2
|
||||
assert resp.json['data'][0]['id'] == 'abc:2021-02-02-1305'
|
||||
assert len(resp.json['data']) == 0
|
||||
|
||||
# events follow agenda display template
|
||||
Event.objects.all().update(publication_date=None)
|
||||
agenda.event_display_template = '{{ event.label }} - {{ event.start_datetime }}'
|
||||
agenda.save()
|
||||
resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug)
|
||||
assert resp.json['data'][0]['text'] == 'Test - Feb. 2, 2021, 1:05 p.m.'
|
||||
assert resp.json['data'][0]['text'] == 'Test - Jan. 19, 2021, 1:05 p.m.'
|
||||
|
||||
|
||||
def test_recurring_events_api_various_times(app, user, mock_now):
|
||||
|
|
Loading…
Reference in New Issue