misc: optimize generation of rdv url

reverse() and request.build_absolute_uri() are expensive, replace them
by staticaly generating URLs with a BASE_URL setting.
This commit is contained in:
Benjamin Dauvergne 2023-04-13 22:58:56 +02:00
parent f6466af00c
commit 81c5984edc
3 changed files with 14 additions and 11 deletions

View File

@ -1,3 +1,4 @@
BASE_URL = 'http://127.0.0.1:9040/'
SECRET_KEY = '1234'
LOGGING = {
'version': 1,

View File

@ -7,8 +7,10 @@ import logging
import secrets
import sys
import time
import urllib.parse
import zoneinfo
from django.conf import settings
from django.http import JsonResponse
from django.utils.text import slugify
@ -155,6 +157,9 @@ def available_time_slots(request):
'lieu__collectivite__pk',
'lieu__collectivite__nom',
)
base_url = getattr(settings, 'BASE_URL', None)
if not base_url:
base_callback_url = request.build_absolute_uri('/')
for date, horaires, duree, lieu_pk, lieu_nom, collectivite_pk, collectivite_nom in qs:
lieu_slug = slugify(lieu_nom)
collectivite_slug = slugify(collectivite_nom)
@ -167,7 +172,10 @@ def available_time_slots(request):
collectivite_pk=collectivite_pk,
collectivite_slug=collectivite_slug,
):
callback_url = request.build_absolute_uri(url)
if not base_url:
callback_url = urllib.parse.urljoin(base_callback_url, url)
else:
callback_url = base_url + url
if date not in date_by_lieu[lieu_pk]:
# prevent the same datetime to be reported multiple times
date_by_lieu[lieu_pk].add(date)

View File

@ -324,17 +324,11 @@ def make_available_time_slots(date, horaires, duree, **kwargs):
start += datetime.timedelta(minutes=duree)
template_make_rdv_url = None
def make_rdv_url(collectivite_pk, collectivite_slug, lieu_pk, lieu_slug, date):
return reverse(
'rdv-redirect',
kwargs={
'collectivite_pk': collectivite_pk,
'collectivite_slug': collectivite_slug,
'lieu_pk': lieu_pk,
'lieu_slug': lieu_slug,
'date': date,
},
)
return f'rdv/{collectivite_slug}-{collectivite_pk}/{lieu_slug}-{lieu_pk}/{date.isoformat()}/'
class Plage(models.Model):