api: reduce datetimes querysets (#56046)

This commit is contained in:
Lauréline Guérin 2021-08-09 09:36:08 +02:00
parent f355ed0492
commit 402438f4df
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 15 additions and 2 deletions

View File

@ -1718,7 +1718,7 @@ class Event(models.Model):
@property
def datetime_slug(self):
assert self.primary_event is not None, 'only for event recurrence'
assert self.primary_event_id is not None, 'only for event recurrence'
datetime_part = self.slug.rsplit('--')[-1]
return datetime.datetime.strptime(datetime_part, '%Y-%m-%d-%H%M')

View File

@ -436,7 +436,7 @@ def get_event_text(event, agenda, day=None):
)
except (VariableDoesNotExist, TemplateSyntaxError):
pass
elif event.label and event.primary_event is not None:
elif event.label and event.primary_event_id is not None:
event_text = '%s (%s)' % (
event.label,
date_format(localtime(event.start_datetime), 'DATETIME_FORMAT'),

View File

@ -2,7 +2,9 @@ import datetime
import urllib.parse as urlparse
import pytest
from django.db import connection
from django.test import override_settings
from django.test.utils import CaptureQueriesContext
from django.utils.timezone import localtime, make_aware, now
from chrono.agendas.models import Agenda, Booking, Desk, Event, TimePeriodException
@ -654,6 +656,17 @@ def test_recurring_events_api(app, user, freezer):
resp = app.get('/api/agenda/%s/datetimes/' % agenda.slug)
assert resp.json['data'][0]['text'] == "Rock'n roll - Jan. 19, 2021, 1:05 p.m."
# check querysets
agenda.event_display_template = ''
agenda.save()
base_event.publication_date = None
base_event.recurrence_end_date = datetime.date.today() + datetime.timedelta(days=365)
base_event.save()
base_event.create_all_recurrences()
with CaptureQueriesContext(connection) as ctx:
app.get('/api/agenda/%s/datetimes/' % agenda.slug)
assert len(ctx.captured_queries) == 5
def test_recurring_events_api_various_times(app, user, mock_now):
agenda = Agenda.objects.create(