api: reduce datetimes querysets (#56046)
This commit is contained in:
parent
f355ed0492
commit
402438f4df
|
@ -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')
|
||||
|
|
|
@ -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'),
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue