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:
parent
f6466af00c
commit
81c5984edc
|
@ -1,3 +1,4 @@
|
|||
BASE_URL = 'http://127.0.0.1:9040/'
|
||||
SECRET_KEY = '1234'
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
Loading…
Reference in New Issue