Fix high query load in pdf_data endpoints

This commit is contained in:
Raphael Michel
2022-07-22 17:11:49 +02:00
parent 826f1fcfa8
commit f6fa9b4b16
4 changed files with 64 additions and 23 deletions

View File

@@ -898,7 +898,7 @@ def test_checkin_only_permission(token_client, event, team, organizer, clist_all
assert resp.status_code == 200
assert resp.data['count'] > 0
# With all permissions, I can not request PDF data during checkin
# With limited permissions, I can not request PDF data during checkin
resp = _redeem(token_client, organizer, [clist_all], p.secret, {}, '?pdf_data=true')
assert resp.status_code == 201
assert not resp.data['position'].get('pdf_data')

View File

@@ -1657,7 +1657,7 @@ def test_revoked_secret_list(token_client, organizer, event):
@pytest.mark.django_db
def test_pdf_data(token_client, organizer, event, order):
def test_pdf_data(token_client, organizer, event, order, django_assert_max_num_queries):
# order detail
resp = token_client.get('/api/v1/organizers/{}/events/{}/orders/{}/?pdf_data=true'.format(
organizer.slug, event.slug, order.code
@@ -1671,9 +1671,10 @@ def test_pdf_data(token_client, organizer, event, order):
assert not resp.data['positions'][0].get('pdf_data')
# order list
resp = token_client.get('/api/v1/organizers/{}/events/{}/orders/?pdf_data=true'.format(
organizer.slug, event.slug
))
with django_assert_max_num_queries(29):
resp = token_client.get('/api/v1/organizers/{}/events/{}/orders/?pdf_data=true'.format(
organizer.slug, event.slug
))
assert resp.status_code == 200
assert resp.data['results'][0]['positions'][0].get('pdf_data')
resp = token_client.get('/api/v1/organizers/{}/events/{}/orders/'.format(
@@ -1683,9 +1684,10 @@ def test_pdf_data(token_client, organizer, event, order):
assert not resp.data['results'][0]['positions'][0].get('pdf_data')
# position list
resp = token_client.get('/api/v1/organizers/{}/events/{}/orderpositions/?pdf_data=true'.format(
organizer.slug, event.slug
))
with django_assert_max_num_queries(32):
resp = token_client.get('/api/v1/organizers/{}/events/{}/orderpositions/?pdf_data=true'.format(
organizer.slug, event.slug
))
assert resp.status_code == 200
assert resp.data['results'][0].get('pdf_data')
resp = token_client.get('/api/v1/organizers/{}/events/{}/orderpositions/'.format(